国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP多進(jìn)程編程

lieeps / 626人閱讀

摘要:輸出結(jié)果子進(jìn)程回收阻塞方式剛剛有么一般我習(xí)慣用加上命令來查找運行著的后臺進(jìn)程。還有一種方法,既可以回收已經(jīng)結(jié)束的子進(jìn)程,又可以并行。但是這個時候,子進(jìn)程會被交給號進(jìn)程,號進(jìn)程成為了這些子進(jìn)程的繼父。

使用多進(jìn)程的優(yōu)點:

    1. 使用多進(jìn)程, 子進(jìn)程結(jié)束以后, 內(nèi)核會負(fù)責(zé)回收資源
    2. 使用多進(jìn)程,子進(jìn)程異常退出不會導(dǎo)致整個進(jìn)程Thread退出. 父進(jìn)程還有機會重建流程.
    3. 一個常駐主進(jìn)程, 只負(fù)責(zé)任務(wù)分發(fā), 邏輯更清楚.

PHP中實現(xiàn)多進(jìn)程,Let"s Go.

我們需要安裝pcnt擴展

pcntl是process control的縮寫,通常,php會默認(rèn)安裝這個擴展。使用phpinfo()函數(shù)查看擴展是否存在。

使用pcntl_fork() 函數(shù)創(chuàng)建子進(jìn)程

pcntl_fork作用就是創(chuàng)建和當(dāng)前進(jìn)程一樣的子進(jìn)程,這個子進(jìn)程代碼段和當(dāng)前進(jìn)程一模一樣,但是擁有自己的數(shù)據(jù)段。看一個最簡單的創(chuàng)建子進(jìn)程的方法:

pcntl_fork()調(diào)用成功以后,一個程序變成了兩個程序:一個程序得到的$pid變量值是0,它是子進(jìn)程;另一個程序得到的$pid的值大于0,這個值是子進(jìn)程的PID,它是父進(jìn)程。

輸出結(jié)果:

子進(jìn)程回收

① 阻塞方式
剛剛有ps么?一般我習(xí)慣用ps aux加上grep命令來查找運行著的后臺進(jìn)程。其中有一列STAT,標(biāo)識了每個進(jìn)程的運行狀態(tài)。這里,我們關(guān)注狀態(tài)Z:僵尸(Zombie)。當(dāng)子進(jìn)程比父進(jìn)程先退出,而父進(jìn)程沒對其做任何處理的時候,子進(jìn)程將會變成僵尸進(jìn)程。僵尸進(jìn)程雖然不占什么內(nèi)存,但是很礙眼。(別忘了它們還占用著PID)

一般來說,在父進(jìn)程結(jié)束之前回收掛掉的子進(jìn)程就可以了。在pcntl擴展里面有一個pcntl_wait()函數(shù),通過這個方法等待進(jìn)程結(jié)束,然后回收已經(jīng)結(jié)束的進(jìn)程。


② 非阻塞方式
阻塞方式失去了多進(jìn)程的并行性。還有一種方法,既可以回收已經(jīng)結(jié)束的子進(jìn)程,又可以并行。這就是非阻塞的方式。


如果父進(jìn)程先掛了怎么辦?

會發(fā)生什么?什么也不會發(fā)生,子進(jìn)程依舊還在運行。但是這個時候,子進(jìn)程會被交給1號進(jìn)程,1號進(jìn)程成為了這些子進(jìn)程的繼父。1號進(jìn)程會很好地處理這些進(jìn)程的資源,當(dāng)它們結(jié)束時1號進(jìn)程會自動回收資源。所以,另一種處理僵尸進(jìn)程的臨時辦法是關(guān)閉它們的父進(jìn)程。

最后需要注意的:

進(jìn)程控制不能被應(yīng)用在Web服務(wù)器環(huán)境,當(dāng)其被用于Web服務(wù)環(huán)境時可能會帶來意外的結(jié)果。 -- 摘自PHP手冊

參考:

http://www.hackingwithphp.com/16/1/3/getting-into-multiprocessing

http://www.jb51.net/article/71232.htm

http://www.laruence.com/2009/06/11/930.html

http://imhuchao.com/596.html

https://www.pureweber.com/article/php-multi-process-programming-preview/

關(guān)注我的公眾號,一起成長

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22643.html

相關(guān)文章

  • PHP回顧之進(jìn)程編程

    摘要:多進(jìn)程中與多進(jìn)程相關(guān)的兩個重要拓展是和。函數(shù)執(zhí)行期間,主進(jìn)程除了等待無法處理其他任務(wù),所以一般不認(rèn)為這是多進(jìn)程編程。回收子進(jìn)程有兩種方式,一種是主進(jìn)程調(diào)用函數(shù)等待子進(jìn)程結(jié)束另外一種是處理信號。 轉(zhuǎn)載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請求 cookie web響應(yīng) session 數(shù)據(jù)庫操作 加解...

    lifesimple 評論0 收藏0
  • PHP并發(fā)IO編程之路

    摘要:下文如無特殊聲明將使用進(jìn)程同時表示進(jìn)程線程。收到數(shù)據(jù)后服務(wù)器程序進(jìn)行處理然后使用向客戶端發(fā)送響應(yīng)。現(xiàn)在各種高并發(fā)異步的服務(wù)器程序都是基于實現(xiàn)的,比如。 并發(fā) IO 問題一直是服務(wù)器端編程中的技術(shù)難題,從最早的同步阻塞直接 Fork 進(jìn)程,到 Worker 進(jìn)程池/線程池,到現(xiàn)在的異步IO、協(xié)程。PHP 程序員因為有強大的 LAMP 框架,對這類底層方面的知識知之甚少,本文目的就是詳細(xì)介...

    Riddler 評論0 收藏0
  • PHP回顧之協(xié)程

    摘要:本文先回顧生成器,然后過渡到協(xié)程編程。其作用主要體現(xiàn)在三個方面數(shù)據(jù)生成生產(chǎn)者,通過返回數(shù)據(jù)數(shù)據(jù)消費消費者,消費傳來的數(shù)據(jù)實現(xiàn)協(xié)程。解決回調(diào)地獄的方式主要有兩種和協(xié)程。重點應(yīng)當(dāng)關(guān)注控制權(quán)轉(zhuǎn)讓的時機,以及協(xié)程的運作方式。 轉(zhuǎn)載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請求 cookie web響應(yīng) sess...

    Java3y 評論0 收藏0
  • 使用 swoole_process 實現(xiàn) PHP 進(jìn)程

    摘要:本文使用與完成一個的進(jìn)程池,并且支持動態(tài)創(chuàng)建新進(jìn)程。接著遍歷所有的進(jìn)程,并且加入中,設(shè)置可讀事件,用于接收子進(jìn)程的空閑信號。最后每隔一秒向進(jìn)程投遞任務(wù)。由于只模擬了十次任務(wù),則第十個任務(wù)完成之后在父進(jìn)程中發(fā)送使所有子進(jìn)程退出。 swoole_process 主要是用來代替 PHP 的 pcntl 擴展。我們知道 pcntl 是用來進(jìn)行多進(jìn)程編程的,而 pcntl 只提供了 fork 這...

    Andrman 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<