首頁 >頭條 >微博 Qzone 微信 pcntl_fork實現PHP多進程

微博 Qzone 微信 pcntl_fork實現PHP多進程

小云云
小云云原創
2017-11-03 13:57:331937瀏覽

PHP工程師平常使用最多的應該是PHP-FMP調度php進程了,PHP的使用並不局限於做Web,也可以用來進行系統工具類的編程,做監控或者是運維。接下來就來談談如何實現PHP多進程的程式設計。

先啟動一個主進程,主進程用來讀取組態資訊

例如,我讀取到了我需要監控5個指標。接下來主進程啟動5個子進程,分別監控這5個指標。

化簡操作:一個主程序創建5個子程序

創建進程在需要使用php的一個函數pcntl_fork(),這個函數可能有的人不太熟,不過接觸過Linux C變成的人都知道Linux下方有個叫fork()的函數,用來建立子程序。

要注意的是:這個函數在Linux下才能使用,而且需要安裝pcntl的擴充功能。

官方文件是這樣說的:

pcntl_fork()函數建立一個子進程,這個子進程僅PID(進程號) 和PPID(父進程號)與其父進程不同。 fork如何在您的系統工作的詳細資訊請查閱您的系統 的fork(2)手冊。

成功時,在父行程執行緒內傳回產生的子程序的PID,在子程序執行緒內回傳0。失敗時,在 父進程上下文傳回-1,不會建立子進程,並且會引發一個PHP錯誤。

這樣就可以建立一個子行程了,子行程建立成功以後會執行pcntl_fork()之後的方法。


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