[李景山php] swoole 进程间 通信

49 篇文章 0 订阅
$workers = [];// 进程仓库
$worker_num = 2;// 最大进程数
// 循环创建子进程
for($i = 0; $i < $worker_num; $i++){
    $process = new swoole_process('callback_function', false, false);
    $process->useQueue();// 开启队列使用,类似于全局队列
    $pid = $process->start();//开启进程
    $workers[$pid] = $process;// 存入句柄仓库
}
// 子进程执行函数
function callback_function(swoole_process $worker){
    $recv = $worker->pop();// 获取队列数据
    echo "从主进程获取数据: $recv\n";
    sleep(2);//睡觉2秒
    $worker->exit(0);// 当前子进程结束
}
// 主进程内,新增队列数据
foreach($workers as $pid => $process){
    $process->push("Hello 子进程[$pid]\n");
}
// 两次等待子进程结束
for($i = 0; $i < $worker_num; $i++){
    // 回收子进程 否则出现僵尸进程
    $ret = swoole_process::wait();// 回收结束运行的子进程,如果子进程结束。类似于 join
    $pid = $ret['pid'];
    unset($workers[$pid]);
    echo "子进程退出, PID=".$pid.PHP_EOL;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值