首頁  >  文章  >  後端開發  >  php 如何實作多進程

php 如何實作多進程

藏色散人
藏色散人原創
2020-10-22 09:23:083214瀏覽

php實現多進程的方法:先開啟pcntl擴展;然後用array_chunk函數把指定數組切割為每500個元素一個數組;接著進行父進程邏輯處理以及子進程處理;最後等待子進程執行結束即可。

php 如何實作多進程

推薦:《PHP影片教學

php多重處理實作

當一個進程執行時間太長,需要是用多進程分解任務,縮短程式執行時間

pcntl是php的一個多進程擴展,pcntl是process control的縮寫

#下面簡單講下pcntl實現多進程的方式。

pcntl_fork — 在目前行程目前位置產生分支(子行程)。譯註:fork是創建了一個子進程,父進程和子進程都從fork的位置開始向下繼續執行,不同的是父進程執行過程中,得到的fork返回值為子進程號,而子進程得到的是0。

範例:

$habit_class这个数组有5000条数据,所以先用array_chunk函数把该数组切割为每500个元素一个数组。
$habit_class = array_chunk($habit_class,500,true);
foreach($habit_class as $k2=>$v2){
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} elseif ($pid) {
//这里是父进程逻辑处理,父进程会返回子进程的pid;
} else {// 子进程处理,子进程返回的pid未0;
foreach($v2 as $k=>$v){
    //进行具体业务处理
}
}
exit;// 一定要注意退出子进程,否则pcntl_fork() 会被子进程再fork,带来处理上的影响。
}
}
// 等待子进程执行结束
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
//echo "Child $status completed\n";
}

 

#

以上是php 如何實作多進程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn