Swoole进程池及其通信详解 | Swoole教程

silverwq
2023-12-30 / 0 评论 / 116 阅读 / 正在检测是否收录...

pool方式启动

https://wiki.swoole.com/#/process/process_pool

// 启动2个进程,通过socket方式进行通信,true启动协程
$pool = new Swoole\Process\Pool(2, SWOOLE_IPC_UNIXSOCK,0,true);
$pool->on('workerStart',function (Swoole\Process\Pool $pool,int $workerId){
    var_dump($workerId);
    $process = $pool->getProcess(0);// 获取workerId为0的进程
    $socket = $process->exportSocket();//获取workerId为0的进程的socket
    if ($workerId == 0) {
        var_dump('000');
        echo $socket->recv();// 阻塞在这里
        $socket->send("hello proc1\n");
        echo "proc0 stop\n";
    } else {
        var_dump('111');
        // \n作为数据的分隔符,表示结束
        $socket->send("hello proc0\n");
        echo $socket->recv();// 阻塞在这里
        echo "proc1 stop\n";
        $pool->shutdown();
    }
});

$pool->start();

执行后,将会输出

int(0)
int(1)
string(3) "string(3) "000"
111"
hello proc0
proc0 stop
hello proc1
proc1 stop

Manage方式启动

0

评论 (0)

取消