行程管理-防止行程成為殭屍行程
#建立好了行程,那麼怎麼對子行程進行管理呢?
使用訊號,子程序的管理,一般有兩種情況:(推薦學習:PHP程式設計從入門到精通)
posix_kill() :此函數並不能顧名思義,它透過向子進程發送一個訊號來操作子進程,在需要要時可以選擇給子進程發送進程終止訊號來終止子進程;
pcntl_waitpid():等待或返回fork的子進程狀態,如果指定的子進程在此函數調用時已經退出(俗稱殭屍進程),此函數將立刻返回,並釋放子進程的所有系統資源,此行程可以避免子行程變成殭屍行程,造成系統資源浪費;
孤兒行程:父程式掛了,子行程被pid=1的init程式接管(wait/waitpid) ,直到子進程自身生命週期結束被系統回收資源和父進程採取相關的回收操作
殭屍進程:子進程exit退出,父進程沒有透過wait/waitpid獲取子進程狀態,子程序佔用的進程號等描述資源符還存在,產生危害:例如進程號是有限的,無法釋放進程號導致未來可能無進程號可用
**父進程中使用:pcntl_wait或者pcntl_waitpid的目的是防止worker成為殭屍進程
作用:使用pcntl_wait()後,在子進程死掉後,父進程也會被停止**
最後我們通過下圖來簡單的總結和描述這個多進程實現的過程:
#進程管理-進程間通訊
##佇列:如Redis ,推薦socket:推薦管道:實作複雜,且管道(pipe),使用檔案形式存在,存在硬碟IO效能瓶頸訊號:承載資訊量少,不好管理程式管理-切換為守護程式
使用&實作php deadloop.php &#
以上是php如何管理流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!