Swoole使用C語言編寫,以PHP擴充的方式來運作。 Swoole的網路IO部分基於epoll/kqueue事件循環,是全異步非阻塞的。業務邏輯部分使用多進程同步阻塞方式來運作。
這樣既保證了Server能夠應付高並發和大量TCP連線。又保證業務程式碼仍然可以簡單的編寫。 (推薦學習: swoole影片教學)
Swoole對比Node.js的優點
1、swoole是原生支援多行程/多執行緒的
開發者只需要修改一個參數,設定下要啟動多少個行程即可。而Node.js的網路庫本身並沒有提供多進程/多執行緒的實作。開發者需要自行建立進程。或者乾脆使用單線程。這樣無法充分利用多核心。
2、swoole使用訊息傳遞 多Worker進程,而不是多執行緒 共享記憶體 加鎖,共享記憶體的效能雖然很好,但有安全性問題,需要讀寫時加鎖。鎖的粒度過大會導致只有一個線程在運行。鎖太複雜又會有死鎖問題。所以開發者需要非常謹慎小心。
3、swoole的程式碼編寫是同步,而不是巢狀非同步回呼
Node.js的程式碼如果太複雜,會巢狀多層回調,使程式碼喪失可讀性,程式流程變得很亂。 Swoole使用了傳統Linux下半同步半非同步多Worker的實作方式。業務代碼按照同步方式編寫,更簡單。
Swoole也內建了Socket客戶端的實現,但採用的是同步 並行方式來執行。 PHP本身也提供了socket的功能,但某幾個函數有些bug,而且比較複雜。 Swoole內建的用戶端類別更安全簡化。
4、swoole內建了Node.js所沒有的額外特性
#如CPU
##Affinity設置,守護程式化,混合UDP/TCP多埠監聽,多重定時器等。以上是swoole是php的擴充嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!