首頁 > 後端開發 > php教程 > popen如何實現多進程並發執行,循環裡的pclose會等待進程完畢再進行下一次循環

popen如何實現多進程並發執行,循環裡的pclose會等待進程完畢再進行下一次循環

WBOY
發布: 2016-10-19 10:40:50
原創
1737 人瀏覽過

1.PHP popen如何實現多進程並發執行,循環裡的pclose會等待進程完畢再進行下一次循環

2.假設有17個進程要開啟,如何實現每次啟動5個進程,並且每完成一個進程就關閉一個進程,同時開啟下一個進程,也就是說最多只有5個進程同時執行

<code>//启动2个进程
for($i = 0;$i < 2;$i++){
    $command = "$phpPath $destPHPFile >> $logFile$i";
    echo "进程开启时间".date('Y-m-d H:i:s')."\n";
    $resource = popen($command,'r');
    if(is_resource($resource)){
        $success++;
        pclose($resource);//下一次循环会等待上一个进程执行完毕,pclose才会释放资源
        echo date('Y-m-d H:i:s')." 进程:".$i."启动完毕,执行完毕并关闭,开启下一个进程\n";
    }else{
        $failure++;
    }
}</code>
登入後複製
登入後複製

這樣的做法相當於每次啟動一個進程,循環執行,相當於單一進程處理任務,如何做到多進程

回覆內容:

1.PHP popen如何實現多進程並發執行,循環裡的pclose會等待進程完畢再進行下一次循環

2.假設有17個進程要開啟,如何實現每次啟動5個進程,並且每完成一個進程就關閉一個進程,同時開啟下一個進程,也就是說最多只有5個進程同時執行

<code>//启动2个进程
for($i = 0;$i < 2;$i++){
    $command = "$phpPath $destPHPFile >> $logFile$i";
    echo "进程开启时间".date('Y-m-d H:i:s')."\n";
    $resource = popen($command,'r');
    if(is_resource($resource)){
        $success++;
        pclose($resource);//下一次循环会等待上一个进程执行完毕,pclose才会释放资源
        echo date('Y-m-d H:i:s')." 进程:".$i."启动完毕,执行完毕并关闭,开启下一个进程\n";
    }else{
        $failure++;
    }
}</code>
登入後複製
登入後複製

這樣的做法相當於每次啟動一個進程,循環執行,相當於單一進程處理任務,如何做到多進程

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板