首頁  >  文章  >  php框架  >  swoole如何運行

swoole如何運行

(*-*)浩
(*-*)浩原創
2019-12-09 09:22:462504瀏覽

 swoole如何運行

單執行緒模式(SWOOLE_BASE)

這個模式就是傳統的非同步非阻塞Server。與Nginx和Node.js等程式是完全一致的。               (建議學習: swoole視訊教學

在時間循環中直接回呼PHP的函數,而非dispatch投遞任務。如果回呼函數中有阻塞操作會導致Server退化為同步模式。 worker_num參數對與BASE模式仍然有效,會啟動多個Worker進程。

BASE模式下沒有Master進程的角色

每個Worker進程同時承擔了Process模式下Reactor線程和Worker進程兩部分職責

# BASE模式下Manager進程是可選的,當設定了worker_num=1,並且沒有使用Task和MaxRequest特性時,底層將直接建立一個單獨的Worker進程,不建立Manager進程

BASE模式的優點:

BASE模式沒有IPC開銷,效能更好

BASE模式程式碼更簡單,不容易出錯

BASE模式的缺點:

TCP連接是在Worker進程中維持的,所以當某個Worker進程掛掉時,此Worker內的所有連接都將關閉

少量TCP長連接無法利用到所有Worker程序

TCP連線與Worker是綁定的,長連線應用程式中某些連線的資料量大,這些連線所在的Worker進程負載會非常高。但某些連線資料量小,所以在Worker進程的負載會非常低,不同的Worker進程無法達到平衡。

BASE模式的適用場景:

如果客戶端連線之間不需要交互,可以使用BASE模式。如Memcache、Http伺服器等。

進程模式(SWOOLE_PROCESS)

多重進程模式是最複雜的方式,用了大量的進程間通訊、進程管理機制。適合業務邏輯非常複雜的場景。 Swoole提供了完善的進程管理、記憶體保護機制。在業務邏輯非常複雜的情況下,也可以長期穩定運作。

Swoole在Reactor執行緒中提供了Buffer的功能,可以應付大量慢速連線和逐位元組的惡意用戶端。另外也提供了CPU親和設定選項,讓程式運作的效率更好。

進程模式的優點:

連線與資料請求傳送是分離的,不會因為某些連線資料量大某些連線資料量小導致Worker流程當不均衡

Worker進程發送致命錯誤時,連接並不會被切斷

可實現單連接並發,僅保持少量TCP連接,請求可以並發地在多個Worker進程中處理

進程模式的缺點:

存在2次IPC的開銷,master進程與worker進程需要使用UnixSocket進行通訊

不支援某些進階功能,如sendwait、pause、resume等操作

以上是swoole如何運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn