内部动态创建的worker,onworkerstart没有输出

justkids

代码如下:
问题:
1,启动以后status 发现只有1个worker进程
2,内部worker的onworkerstart方法好像没有触发,没有输出 task start

$worker = new Worker('text://0.0.0.0:2015');
$worker->onWorkerStart = function($worker)
{
    echo 'worker start';
    $taskWorker=new Worker('Text://0.0.0.0:12345');
    $taskWorker->onWorkerStart=function(){
        echo 'task start';
    };
    $taskWorker->listen();
};

// 运行worker
Worker::runAll();
3353 2 0
2个回答

walkor

status只有一个进程是正常的,onWorkerStart时创建的worker实例不会开启新的进程。是在原有进程里面监听端口,也就上面代码是一个进程同时监听2015和12345端口。

如果是以daemon(-d)方式启动,worker start是不会输出的。

你贴的代码我测试是正常的,worker start有输出。

  • justkids 2016-02-26

    是能输出worker start,但是不能输出task start是吗?我这里是这样的

walkor

onWorkerStart 是进程启动时产生的回调,因为当前进程已经启动,所以不会触发。
你可以直接在listen()后写原本在onWorkerStart时触发的代码。

  • 暂无评论
年代过于久远,无法发表回答
🔝