1. 程式人生 > >10.swoole學習筆記--進程隊列通信

10.swoole學習筆記--進程隊列通信

pre 啟動進程 als ima blog 學習 recv alt sta

<?php
//進程倉庫
$workers=[];

//最大進程數
$worker_num=2;

//批量創建進程
for($i=0;$i<$worker_num;$i++){
    //創建子進程
    $process=new swoole_process("doProcess",false,false);
    //開啟隊列--類似於全局函數
    $process->useQueue();
    //啟動進程並獲取進程id
    $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("Hell 子進程 $pid \n"); } //等待子進程結束回收資源 for($i=0;$i<$worker_num;$i++){ $ret
=swoole_process::wait();//等待執行完成 $pid=$ret[pid]; unset($workers[$pid]); echo "子進程$pid\n"; } ?>

技術分享圖片

10.swoole學習筆記--進程隊列通信