swoole是一個多進程模型的框架,當啟動一個進程swoole應用時,一共會創建2 n m個進程,n為worker進程數,m為TaskWorker進程數,1個master行程與一個manager行程,關係如下圖所示
Master行程為主行程,該行程會建立Manager行程、Reactor執行緒等工作進/執行緒。
Worker進程作為Swoole的工作進程,所有的業務邏輯程式碼都在此進程上執行。當Reactor執行緒接收到來自客戶端的資料後,會將資料打包通過管道傳送給某個Worker進程。
swoole中worker/task進程都是由Manager進程Fork並管理的。
子程序結束執行時,manager程序負責回收此子程序,避免成為殭屍程序。並創建新的子進程
伺服器關閉時,manager進程將發送訊號給所有子進程,通知子進程關閉服務
伺服器reload時,manager進程會逐個關閉/重啟子進程
fork():
一個流程,包括程式碼、資料和分配給進程的資源。 fork()函數透過系統呼叫創建一個與原來進程幾乎完全相同的進程,也就是兩個進程可以做完全相同的事,但如果初始參數或傳入的變數不同,兩個進程也可以做不同的事。
一個程序呼叫fork()函數後,系統先給新的程序分配資源,例如儲存資料和程式碼的空間。然後把原來的進程的所有值都複製到新的新進程中,只有少數值與原來的進程的值不同。相當於克隆了一個自己。
推薦學習: swoole教學
#以上是swoole怎麼創建worker的詳細內容。更多資訊請關注PHP中文網其他相關文章!