Process\Pool->on

设置进程池回调函数。

function Process\Pool::on(string $event, callable $function);

子进程启动

onWorkerStart回调函数,接受2个参数:

  1. Pool对象
  2. WorkerId当前工作进程的编号,底层会对子进程进行标号,范围是[0-$worker_num)
function onWorkerStart(Swoole\Process\Pool $pool, int $workerId)
{
    echo "Worker#{$workerId} is started\n";
}

子进程结束

onWorkerStop回调函数,与onWorkerStart参数一致。

消息接收

onMessage回调函数,收到外部投递的消息。 一次连接只能投递一次消息, 类似于php-fpm的短连接机制.

  1. Pool对象
  2. 消息数据内容
function onMessage(Swoole\Process\Pool $pool, string $data)
{
    var_dump($data);
}

  • 赞

    我4.2.5版本在尝试WorkerStart中使用了sleep(5),第一次循环会报: WARNING swProcessPool_wait: worker#1 abnormal exit, status=0, signal=11 之后就为什么不会再报了.

  • 东风

    给对swoole感兴趣的朋友推荐一个swoole学习群:820469789,群里面每天会讲解swoole项目,还有大牛答疑解惑,学习与快乐同在。我们群是关于swoole学习的,希望大家多多交流。即使是小白也没有关系,只要加入QQ群,就可以获取一些免费的学习资料。