10.swoole學習筆記--進程隊列通信
阿新 • • 發佈:2018-02-11
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學習筆記--進程隊列通信