workerman定时器不生效原因是什么,怎么解决
Admin 2022-07-22 群英技术资讯 1583 次浏览
今天就跟大家聊聊有关“workerman定时器不生效原因是什么,怎么解决”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“workerman定时器不生效原因是什么,怎么解决”文章能对大家有帮助。
workerman中定时器不生效的原因是:定时器不能在【runAll】方法执行前运行,此方法执行前运行的代码全部属于主进程,主进程不能有业务代码,主进程的业务代码会被子进程继承。解决方法是:在【onWorkerStart】中运行定时器即可。
问题引出:
把一个\Workerman\Lib\Timer放在start_gateway.php中执行,每两秒执行一次,每次执行首先记录一段文字到文本文件。
当以 php start.php start 的方式运行的时候是没有问题的,但当以php start.php start -d 的方式运行的时候好像计时器并没有运行起来。
start_gateway.php代码如下



问题解决:
业务逻辑都要在onXXX回调中运行的(手册中有强调过),换句话说定时器不能在Worker::runAll();执行前运行。
因为Worker::runAll();执行前运行的代码都是属于主进程的,主进程不能有业务代码,主进程的业务代码会被子进程继承,导致与预期结果不符。
上述例子中可以放到onWorkerStart中运行定时器,建议放到start_businessworker.php中的$businessworker->onWorkerStart回调中。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在写网络爬虫时最头疼的问题就是网站方采取了种种措施拒绝网络爬虫的访问,写爬虫的开发者需要用各种手段改进网络爬虫, 以更隐蔽的手段来爬取数据。
1)修改PHP的配置文件php.ini这种方式设置error_reporting后,重启web服务器,就会永久生效。
在php编程中使用引用传递是比较常有的事情,小编今天用了实例代码来给大家讲解这篇文章,如果你需要这方面的知识点,可以随时来参考下。
在本篇文章里小编给大家整理的是一篇关于php去除deprecated的实例方法,有兴趣的朋友们可以跟着学习参考下。
什么是魔术方法?如何在 Laravel 中的应用?下面本篇文章给大家介绍一下PHP 魔术方法在 Laravel中应用的方法,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008