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()之後的方法。