Swoole:PHP 協程框架
swoole 使 PHP 開發人員可以編寫高性能高并發的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服務,讓 PHP 不再局限于 Web 領域。Swoole4 協程的成熟將 PHP 帶入了前所未有的時期, 為性能的提升提供了獨一無二的可能性。Swoole 可以廣泛應用于互聯網、移動通信、云計算、 網絡游戲、物聯網(IOT)、車聯網、智能家居等領域。使用 PHP + Swoole 可以使企業 IT 研發團隊的效率大大提升,更加專注于開發創新產品。而至于他怎么運行的呢?小編就來告訴你
我們可以看到,Swoole 主要包含以下組件:
Master:當我們運行啟動 Swoole 的 PHP 腳本時,首先會創建該進程(它是整個應用的 root 進程),然后由該進程 fork 出 Reactor 線程和 Manager 進程。
Reactor:Reactor 是包含在 Master 進程中的多線程程序,用來處理 TCP 連接和數據收發(異步非阻塞方式)。Reactor 主線程在 Accept 新的連接后,會將這個連接分配給一個固定的 Reactor 線程,并由這個線程負責監聽此 socket。在 socket 可讀時讀取數據,并進行協議解析,將請求投遞到 Worker 進程;在 socket 可寫時將數據發送給 TCP 客戶端。
Manager:Manager 進程負責 fork 并維護多個 Worker 子進程。當有 Worker 子進程中止時,Manager 負責回收并創建新的 Worker 子進程,以便保持 Worker 進程總數不變;當服務器關閉時,Manager 將發送信號給所有 Worker 子進程,通知其關閉服務。
Worker:以多進程方式運行,每個子進程負責接受由 Reactor 線程投遞的請求數據包,并執行 PHP 回調函數處理數據,然后生成響應數據并發給 Reactor 線程,由 Reactor 線程發送給 TCP 客戶端。所有請求的處理邏輯都是在 Worker 子進程中完成,這是我們編寫業務代碼時真正要關心的部分。
Task Worker:功能和 Worker 進程類似,同樣以多進程方式運行,但僅用于任務分發,當 Worker 進程將任務異步分發到任務隊列時,Task Worker 負責從隊列中消費這些任務(同步阻塞方式處理),處理完成后將結果返回給 Worker 進程。
Swoole 官方對 Reactor、Worker、Task Worker有一個形象的比喻,如果把基于 Swoole 的 Web 服務器比作一個工廠,那么 Reactor 就是這個工廠的銷售員,Worker 是負責生產的工人,銷售員負責接訂單,然后交給工人生產,而 Task Worker 可以理解為行政人員,負責提工人處理生產以外的雜事,比如訂盒飯、收快遞,讓工人可以安心生產。
以上就是“徹底搞明白了,swoole客戶端怎么執行”的詳細內容,想要了解更多swoole教程歡迎關注編程學習網
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/8458/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料