swoole使用異步進程通信
阿新 • • 發佈:2018-05-06
pre 非阻塞 執行文件 write 執行 文件 HP false count
$process = new swoole_process(function($pro){
$pro->exec(‘//linux中的php命令所在絕對路徑‘, [‘//執行文件絕對路徑‘]);
}, false);
$process->start();//開啟進程
swoole_process::wait();//通過 #pstree -p Pid 進行查看線程間的關系
#####################################分隔符#################################################
用多進程執行多請求
//模擬請求多網站的數據
echo ‘start time : ‘ . date(‘H:i:s‘) . PHP_EOL;
$workers = [];
$urls = [
‘https://baidu.com‘,
‘https://sina.com.cn‘,
‘https://bilibili.com‘,
‘https://pipigui.cc‘,
‘https://www.swoole.com‘,
‘https://wiki.swoole.com‘,
];
$url_counts = count($urls);
for($i = 0; $i < $url_counts; $i++ ){
//創建線程請求
//當創建線程的第二個參數為true時,數據存儲在線程間的管道中,不打印出來,為非阻塞模式
//為false為阻塞,為同步執行
$process = new swoole_process(function($pro) use($i , $urls){
$content = curlData($urls[$i]);
// echo $content . PHP_EOL;
$pro->write($content . PHP_EOL);
},true);
$process->start();
$workers[] = $process;
}
//打印出存在管道的數據
foreach($workers as $process){
echo $process->read();
}
//模擬curl請求
function curlData($url){
sleep(1);
return $url . ‘: request success‘ ;
}
echo ‘end time : ‘ . date(‘H:i:s‘) . PHP_EOL;
swoole使用異步進程通信