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