手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜Qcloud , 注册 | 登陆

workerman 无限reload的问题

首页 > PHP >

不喜用swoole,主要还是因为workerman是PHP版的,几乎不需要有什么额外的依赖。而Swoole则需要扩展。

 

调试阶段遇到和踩的一些坑在这里记录一下
1、因为reload不是重启,所以如果有一些文件需要reload,必须要onWorkStart里,不能在之前就include进来。否则无效
2、因为引入了Yii的queue,而Yii的queue,不是一个标准的controller,他只要调用过的Job,就会在内存里,所以只能通过exec(yii queue/run)之类的(当然,这本身也应该用supervisor或者systemd来进行管理)
3、无限reload:这个问题比较妖,我开始一直以为是官方例子里的last_time没有赋值或者赋值失败。所以测试了一些:
  1. $worker->reloadable = false,必须要为false 
  2. 如果 Timer::add(3 , 'check_file_change'),如果这里是一个callable,那么死活就是无限reload(也可能是我方法不对?),直接我用Timer::add(3,function(){ ... })就正常了
4、官方有一个GlobalData的共享组件,如果你本身有redis之类的,就不要用了。当然他比较简单一些(反正他也不是什么分布式)
5、其他还有一些小坑,后续再说了



本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: workerman

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):