因为 https://github.com/openresty/lua-nginx-module#ngxtimerat 的示例我并不怎么看懂...
local delay = 5
local handler
handler = function (premature)
-- do some routine job in Lua just like a cron job
if premature then
return
end
local ok, err = ngx.timer.at(delay, handler)
if not ok then
ngx.log(ngx.ERR, "failed to create the timer: ", err)
return
end
end
我目前以为是这样的:
1. 从 local ok, err = ngx.timer.at(delay, handler) 到 if not ok then ... end 这段是判断当 timer 出错时输出日志(根据返回的 err == nil)
2. local ok, err = ngx.timer.at(delay, handler) 这行中的 handler 就是前面定义的函数名, ngx.timer 在 delay 时间后调用 handler 函数
所以我的疑问是:
1. 关于那段函数
function handler(premature)
if premature then
return
end
给 timer 调用的函数必须要有一个传入变量 "premature" 或者 "return" 这个指令吗
2. ngx.timer 应该怎么运行呢
示例中的 local ok, err = ngx.timer.at(delay, handler) 只是定义了两个变量吧,或者说是 timer 因为这行的存在就会执行(而不是要先在前面写一行运行 timer 的代码,再用这行代码来判断运行成功与否)
就是说,我能不能不使用定义 ok err 两个变量,而直接例如 return ngx.timer.at(delay, handler) 呢