swoole_server->addProcess [编辑本页]

添加一个用户自定义的工作进程。

bool swoole_server->addProcess(swoole_process $process);
  • $process 为swoole_process对象,注意不需要执行start。在swoole_server启动时会自动创建进程,并执行指定的子进程函数
  • 创建的子进程可以调用$server对象提供的各个方法,如connection_list/connection_info/stats
  • 在worker/task进程中可以调用$process提供的方法与子进程进行通信
  • 在用户自定义进程中可以调用$server->sendMessage与worker/task进程通信

此函数通常用于创建一个特殊的工作进程,用于监控、上报或者其他特殊的任务。

子进程会托管到Manager进程,如果发生致命错误,manager进程会重新创建一个
子进程内不能使用swoole_server->task/taskwait接口
此函数在swoole-1.7.9以上版本可用

示例程序

$server = new swoole_server('127.0.0.1', 9501);

$process = new swoole_process(function($process) use ($server) {
    while (true) {
        $msg = $process->read();
        foreach($server->connections as $conn) {
            $server->send($conn, $msg);
        }
    }
});

$server->addProcess($process);

$server->on('receive', function ($serv, $fd, $from_id, $data) use ($process) {
    //群发收到的消息
    $process->write($data);
});

$server->start();

  • ffff

    这个有事例代码么,有点抽象

  • Thinklei

    时间一长进程就死掉了

  • 落舞者

    里面的进程记得守护一下.要不会不停的创建..

  • peng

    WARN swServer_get_worker: worker_id is exceed serv->worker_num + SwooleG.task_worker_num

  • ____

    http://group.swoole.com/question/106189 韩哥,请帮我看看这个问题 addProcess的问题

  • 郭旺林

    [衰] 没看懂 能说下作用场景吗

  • 1234

    那位友友优雅地附上linux下的进程截图啊 看看这两个进程

  • ja颂

    实例代码没看懂$server->addProcess($process);的作用,根据上下文,感觉多余。。。

  • 洪亮

    请问守护一下是什么意思,我就碰到不停创建的问题,但是不明白是什么原因

  • Fang茨

    worker/task 如何接收process发送而来的消息?

  • 罗大发冲上云霄

    子进程会托管到Manager进程,如果发生致命错误,manager进程会重新创建一个。和worker进程和task进程一样,即使是没有正常执行完子进程后,manager也会重新创建。

  • 城

    请问如果不群发应该如何实现呢?这些回调函数真心不好看懂。。。。