ngx.now() 返回值一样

299 views
Skip to first unread message

Ivan King

unread,
Nov 9, 2016, 4:36:21 AM11/9/16
to openresty
今天发现一个问题 两个ngx.now() 直接执行多久的代码 都是返回一样的值



ngx.say(ngx.now())
ngx.say(os.date("now is %x %X"))
for i=1,100000,1 do
   ngx.encode_base64(body)
end
ngx.say(ngx.now())
ngx.say(os.date("now is %x %X"))


执行返回值如下
1478684107.716
now is 11/09/16 17:35:07
1478684107.716
now is 11/09/16 17:35:16



Ivan King

unread,
Nov 9, 2016, 4:37:16 AM11/9/16
to openresty
两个ngx.now() 之间执行多久的代码 都是返回一样的值

在 2016年11月9日星期三 UTC+8下午5:36:21,Ivan King写道:

Ivan King

unread,
Nov 9, 2016, 4:44:38 AM11/9/16
to openresty
已经确定问题所在 ngx.now()为缓存时间  可以ngx.update_time()强制触发更新

现在有新的疑问 ,在什么情况下ngx.now()会被动触发更新缓存


在 2016年11月9日星期三 UTC+8下午5:36:21,Ivan King写道:
今天发现一个问题 两个ngx.now() 直接执行多久的代码 都是返回一样的值

wliu

unread,
Nov 9, 2016, 4:48:22 AM11/9/16
to open...@googlegroups.com
使用resty工具的话,你需要手动调用 ngx.update_time(),否则返回的是缓存好的时间


--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

Ivan King

unread,
Nov 9, 2016, 5:00:01 AM11/9/16
to openresty, stup...@126.com
谢谢 已经解决了

在 2016年11月9日星期三 UTC+8下午5:48:22,wliu写道:

Yichun Zhang (agentzh)

unread,
Nov 9, 2016, 5:29:51 PM11/9/16
to openresty
Hello!

2016-11-09 1:44 GMT-08:00 Ivan King:
> 现在有新的疑问 ,在什么情况下ngx.now()会被动触发更新缓存
>

当有新的 I/O 事件发生或者有新的 timer 到达超时时间,nginx 缓存的当前时间会自动进行更新。

Regards,
-agentzh
Reply all
Reply to author
Forward
0 new messages