這篇文章主要介紹了php實(shí)現(xiàn)多進(jìn)程的案例,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
php實(shí)現(xiàn)多進(jìn)程的方法:首先開(kāi)啟pcntl擴(kuò)展;然后用array_chunk函數(shù)把指定數(shù)組切割為每500個(gè)元素一個(gè)數(shù)組;接著進(jìn)行父進(jìn)程邏輯處理以及子進(jìn)程處理;最后等待子進(jìn)程執(zhí)行結(jié)束即可。
php多進(jìn)程實(shí)現(xiàn)
當(dāng)一個(gè)進(jìn)程執(zhí)行時(shí)間太長(zhǎng),需要是用多進(jìn)程分解任務(wù),縮短程序執(zhí)行時(shí)間
pcntl是php的一個(gè)多進(jìn)程擴(kuò)展,pcntl是process control的縮寫(xiě)
下面簡(jiǎn)單講下pcntl實(shí)現(xiàn)多進(jìn)程的方式。
pcntl_fork — 在當(dāng)前進(jìn)程當(dāng)前位置產(chǎn)生分支(子進(jìn)程)。譯注:fork是創(chuàng)建了一個(gè)子進(jìn)程,父進(jìn)程和子進(jìn)程 都從fork的位置開(kāi)始向下繼續(xù)執(zhí)行,不同的是父進(jìn)程執(zhí)行過(guò)程中,得到的fork返回值為子進(jìn)程 號(hào),而子進(jìn)程得到的是0。
例子:
$habit_class這個(gè)數(shù)組有5000條數(shù)據(jù),所以先用array_chunk函數(shù)把該數(shù)組切割為每500個(gè)元素一個(gè)數(shù)組。 $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) { //這里是父進(jìn)程邏輯處理,父進(jìn)程會(huì)返回子進(jìn)程的pid; } else {// 子進(jìn)程處理,子進(jìn)程返回的pid未0; foreach($v2 as $k=>$v){ //進(jìn)行具體業(yè)務(wù)處理 } } exit;// 一定要注意退出子進(jìn)程,否則pcntl_fork() 會(huì)被子進(jìn)程再fork,帶來(lái)處理上的影響。 } } // 等待子進(jìn)程執(zhí)行結(jié)束 while (pcntl_waitpid(0, $status) != -1) { $status = pcntl_wexitstatus($status); //echo "Child $status completed\n"; }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享php實(shí)現(xiàn)多進(jìn)程的案例內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
文章標(biāo)題:php實(shí)現(xiàn)多進(jìn)程的案例-創(chuàng)新互聯(lián)
鏈接URL:http://chinadenli.net/article28/cdhcjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)、虛擬主機(jī)、外貿(mào)網(wǎng)站建設(shè)、服務(wù)器托管、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容