如题,调用Worker::runAll(),终端运行 php start.php start 出现如下问题:
代码:
public static function onWorkerStart()
{
$task = new Worker();
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
$task->count = 1;
$task->onWorkerStart = function ($task) {
// 每2.5秒执行一次
$time_interval = 10;
Timer::add($time_interval, function () {
$data = json_encode([
'type' => 'timer',
'message' => '定时器执行ing',
]);
GateWay::sendToAll($data);
});
};
// 运行worker
Worker::runAll();
// Timer::add(10, function(){
// $data = json_encode([
// 'type' => 'timer',
// 'message' => '定时器执行ing',
// ]);
// GateWay::sendToAll($data);
// });
}
我在测试定时器,但是用worker运行就会出现这个问题,而直接使用Timer则正常
感觉在这里不应该再Worker::runAll();了,但定时器无法启动,请赐教,非常感谢
环境:
GatewayWorker版本:3.0.15
PHP:7.1.3
根据手册,onWorkerStart里直接用timer就行了,不用new Worker
感谢您的帮助,我看文档:http://doc.workerman.net/timer/notice.html
说最好启用新的worker吗
onWorkerStart 里new Worker,并不是创建新的进程,而是在当前进程创建监听