Timer被系统清理掉了

0

1月31日上午8:54分在start_gateway.php中启动的Timer,两秒触发一次,在第二天(上午0:33)的时候Timer不再触发函数了。


图片


请问Gateway是否有崩溃日志,Timer停止是因为系统回收了还是代码崩溃了或者是Timer是有最大计数的?

已邀请:

walkor

赞同来自:

Timer不会自己消失,更不会被系统回收,这种问题绝大多数是业务问题,或者是开发者判断失误。


请仔细检查自己的业务逻辑是否有问题,比如$openids是否可能为空,file_get_contents($callback)有可能一直阻塞不返回导致定时器卡主。如果$value='/tmp/queue/',exec("rm -rf /tmp/queue/") 会删掉queue目录的,foreach永远将不会进入,也就没有日志。


php start.php status 可以看到各个进程运行情况,包括gateway运行情况。


最后建议在Timer函数第一行就记录个日志,看下是否有进入定时逻辑。如果发现定时器没有运行,可以利用strace lsof两个命令排查下进程卡在哪里,比如卡在url请求上

秀才

赞同来自:

多谢,我将排查一下这部分代码,解决后会将解决方法贴上来。

walkor

赞同来自:

好的,感谢

秀才

赞同来自:

数据不再放在文件里,改为放在redis里,还可以做负载均衡。问题就这么解决了。

要回复问题请先登录注册