GatewayWorker的Events.php中调用Worker::runAll()出现异常

web360

如题,调用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

参照资料:http://doc2.workerman.net/timer.html

2321 1 0
1个回答

six

根据手册,onWorkerStart里直接用timer就行了,不用new Worker

年代过于久远,无法发表回答
🔝