為了充分發揮伺服器多CPU的效能,WorkerMan預設支援多進程多任務。
WorkerMan開啟一個主進程和多個子進程對外提供服務, 主進程負責監控子進程,子進程獨自監聽網路連接並接收發送及處理數據,由於進程模型簡單,使得WorkerMan更加穩定,更有效率。 (推薦學習: workerman教學)
建立一個主程式(守護程式),一旦啟動長時間運行在後台,即使關掉瀏覽器頁面.
主執行緒定時查詢資料庫(MySQL),一旦發現有符合條件的URL(可能多條),即建立對應的數量的子程序.
子進程也需要長時間存在,定時輪詢URL對應的伺服器取回資料.
子程序一旦取回所需要的資料,將結果儲存到資料庫,自我結束(或被主行程關閉).
進程數設定原則
1、每個行程佔用記憶體總和需要小於總記憶體(一般來說每個業務進程佔用記憶體大概40M左右)
2、如果是IO密集型,也就是業務中涉及到一些阻塞式IO,例如一般的存取Mysql、Redis等儲存都是阻塞式存取的,進程數可以開大一些,如配置成CPU核數的3倍。
如果業務中涉及的阻塞等待很多,可以再適當加大進程數,例如CPU核數的5倍甚至更高。注意非阻塞式IO屬於CPU密集型,而非IO密集型。
3、如果是CPU密集型,也就是業務中沒有阻塞式IO開銷,例如使用非同步IO讀取網路資源,進程不會被業務程式碼阻塞的情況下,可以把進程數設定成和CPU核數一樣
以上是workerman可以多重處理嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!