您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
swoole学习笔记-进程队列通信
发布时间:2018-04-30 11:10:09编辑:雪饮阅读()
创建进程队列通信脚本
<?php
//进程仓库
$workers=[];
//最大进程数
$worker_num=2;
//批量创建进程
for($i=0;$i<$worker_num;$i++){
//第二个参数默认为空,第三个参数为false才可以进行管道通信
$process=new swoole_process('doProcess',false,false);
//开启队列,类似于全局函数
$process->useQueue();
$pid=$process->start();
$workers[$pid]=$process;
}
//子进程创建成功后要执行的函数
function doProcess(swoole_process $process){
//从进程中获取数据,默认获取长度为8192
$recv=$process->pop();
echo "主进程从子进程获取到数据:$recv \n";
sleep(5);
/*
退出子进程,这里虽然退出,但是最后最好要使用子进程结束的等待函数,
否则就会有可能出现僵尸进程
*/
$process->exit(0);
}
//主进程 向子进程添加数据
foreach($workers as $pid=>$process){
$process->push("hello 子进程 $pid \n");
}
//等待(监听) 子进程结束 回收资源(响应上面的"$process->exit(0);")
for($i=0;$i<$worker_num;$i++){
//等待执行完成
$ret=swoole_process::wait();
$pid=$ret["pid"];
unset($workers[$pid]);
echo "子进程退出 $pid \n";
}
关键字词:swoole,进程队列通信
上一篇:swoole学习笔记-进程事件
下一篇:swoole学习笔记-信号触发