所以貌似得改一改
rolling_file.lua,让它返回一个值 可以参考一下logging/file.lua,貌似它里面是直接返回了一个函数在 2012年7月4日 下午4:53,pengqi
<fen...@gmail.com>写道:
require首先会检查package.loaded[" logging.rolling_file"]是否为空,为空的话,会新将package.loaded["
logging.rolling_file"]设置为true,再去做实际的load操作(也就是执行一下require的模块,并将返回值保存在package.loaded[" logging.rolling_file"]),但是我看了一下 rolling_file.lua这个文件中并没有显示的使用module()函数,也没有return任何值,所以最后返回的就是true了。
logging/rolling_file.lua里面显示的调用了require "logging",logging模块里面使用module["
logging"],module函数会新建一个table,并保存在全局表中名为 logging的全局变量中,相应的
rolling_file.lua里面的function logging.rolling_file会在
logging 这个全局变量(table)里面保存一个函数。所以在第一次请求的require后,是可以正常使用,但是随后的请求再去require,require发现
package.loaded[" logging.rolling_file"] 不为空,会直接返回
package.loaded[" logging.rolling_file"] ,也就是true,但是这时是没有做任何load操作(设置全局变量的操作),所以
logging 实际上是未定义的(你应该是用的比较新的lua模块版本吧?之前的版本所有请求的coroutine是共享main thread的全局表中的_G变量)
在 2012年7月4日 下午3:57,Wendal Chen
<wend...@gmail.com>写道:
这里使用的require,都是需要用local xxx = require "xxxxx"的在 2012年7月4日 下午3:42,damacheng009
<damac...@gmail.com>写道:
不是的,我用的就是正确的模块名。。
2012-07-04
damacheng009
发件人: kindy
收件人: openresty
抄送:
主题: Re: Re: Re: [openresty]
关于使用第三方库
呃,那是因为我写错了 模块的名字,
抱歉。。
请使用正确的 module name 来测试哈。。
2012/7/4 damacheng009
<damac...@gmail.com>
local x = require 'loggin.rolling_file'
x是个Boolean...
2012-07-04
damacheng009
发件人: kindy
收件人: openresty
抄送:
主题: Re: Re: [openresty] 关于使用第三方库
一般不建议使用全局的形式,
使用
local x = require 'loggin.rolling_file'
ngx.say(type(x))
的形式吧。
更安全,也更高效(局部变量)
2012/7/4 damacheng009
<damac...@gmail.com>
有个问题
lua代码如下:
require "logging.rolling_file"
ngx.say(type(logging))
第一请求次返回table
之后请求就返回nil了
看agentzh的微博说添加init_by_lua 和 init_by_lua_file 配置指令
那么把require放到init_by_lua里应该就可以解决了吧?
2012-07-04
damacheng009
发件人: kindy
收件人: openresty
抄送:
主题: Re: [openresty] 关于使用第三方库
location = /test {
content_by_lua "
ngx.say(package.path)
ngx.say(package.cpath)
";
}
看看你的配置里,lua模块应该放哪里。
然后放过去就可以啦。
On Wed, Jul 4, 2012 at 2:55 PM, damacheng009
<damac...@gmail.com> wrote:
大家下午好:
请问该如何使用呢?
2012-07-04
damacheng009
--
林青(Kindy Lin)
--
林青(Kindy Lin)
--
林青(Kindy Lin)
--
Wendal Chen
GuangDong China
--
Jinglong
Software Engineer
Server Platforms Team at Taobao
--
Jinglong
Software Engineer
Server Platforms Team at Taobao