openresty下lua的function定义及调用

您所在的位置:网站首页 lua函数调用另一个函数 openresty下lua的function定义及调用

openresty下lua的function定义及调用

2024-06-23 07:22| 来源: 网络整理| 查看: 265

本文主要研究下如何在openresty下lua的function定义及调用。

源码示例

/usr/local/openresty/lualib/resty/string.lua

代码语言:javascript复制-- Copyright (C) by Yichun Zhang (agentzh) local ffi = require "ffi" local ffi_new = ffi.new local ffi_str = ffi.string local C = ffi.C local setmetatable = setmetatable local error = error local tonumber = tonumber local _M = { _VERSION = '0.09' } ffi.cdef[[ typedef unsigned char u_char; u_char * ngx_hex_dump(u_char *dst, const u_char *src, size_t len); intptr_t ngx_atoi(const unsigned char *line, size_t n); ]] local str_type = ffi.typeof("uint8_t[?]") function _M.to_hex(s) local len = #s * 2 local buf = ffi_new(str_type, len) C.ngx_hex_dump(buf, s, #s) return ffi_str(buf, len) end function _M.atoi(s) return tonumber(C.ngx_atoi(s, #s)) end return _M实例demo.lua代码语言:javascript复制local _M = { _VERSION = '0.01' } function _M.hello() ngx.say("hello from demo module!") end return _Mconf代码语言:javascript复制 location /function { content_by_lua ' local demo = require("demo") demo.hello() '; }报错代码语言:javascript复制2018/03/26 16:24:15 [error] 5#5: *1 lua entry thread aborted: runtime error: content_by_lua(nginx.conf:69):2: module 'demo' not found: no field package.preload['demo'] no file '/usr/local/openresty/lualib/demo.lua' no file '/usr/local/openresty/lualib/demo/init.lua' no file './demo.lua' no file '/usr/local/openresty/luajit/share/luajit-2.1.0-beta2/demo.lua' no file '/usr/local/share/lua/5.1/demo.lua' no file '/usr/local/share/lua/5.1/demo/init.lua' no file '/usr/local/openresty/luajit/share/lua/5.1/demo.lua' no file '/usr/local/openresty/luajit/share/lua/5.1/demo/init.lua' no file '/usr/local/openresty/lualib/demo.so' no file './demo.so' no file '/usr/local/lib/lua/5.1/demo.so' no file '/usr/local/openresty/luajit/lib/lua/5.1/demo.so' no file '/usr/local/lib/lua/5.1/loadall.so' stack traceback: coroutine 0: [C]: in function 'require' content_by_lua(nginx.conf:69):2: in function , client: 192.168.99.1, server: , request: "GET /function HTTP/1.1", host: "192.168.99.100:8686"修复代码语言:javascript复制ADD demo.lua /usr/local/openresty/lualib/demo.lua小结

从源码可以看出,基本是定义一个_M变量,里头有个_VERSION属性,然后定义_M的function,最后返回_M。另外注意自己定义的类库需要放在openresty查找的路径下面,否则会报错。

doc调用代码前先定义函数OpenResty如何在一个lua文件调用另一个lua文件的函数


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3