代码 swoole_process_communication.php
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/12/27
* Time: 9:35
*/
//进程通讯
$workers = []; //进程仓库
$worker_num = 2;//最大进程数
//批量创建进程 完成
for($i=0;$i<$worker_num;$i++){
$process = new swoole_process("doProcess",false,false);//创建子进程完成
$process->useQueue();//开启队列,类似全局函数
$pid = $process->start();
$workers[$pid] = $process;
}
//进程执行函数
function doProcess(swoole_process $process){
$recv = $process->pop();//默认8192
echo "从主进程获取到数据: $recv \n";
sleep(5);
$process->exit(0);
}
//主进程向子进程添加数据
foreach($workers as $pid => $process){
$process->push("hello 子进程 $pid \n");
}
//等待子进程结束 回收资源s
for($i=0;$i<$worker_num;$i++){
$ret = swoole_process::wait();//等待执行完成
$pid = $ret['pid'];
unset($workers[$pid]);
echo "子进程退出 $pid \n";
}
结果