Workman和swoole的區別是什麼

workerman

workerman是一個高性能的PHP socket 服務器框架,workerman基於PHP多進程以及libevent事件輪詢庫,PHP開發者只要實現一兩個接口,便可以開發出自己的網絡應用,例如Rpc服務、聊天室服務器、手機遊戲服務器等。

workerman的目標是讓PHP開發者更容易的開發出基於socket的高性能的應用服務,而不用去了解PHP socket以及PHP多進程細節。 workerman本身是一個PHP多進程服務器框架,具有PHP進程管理以及socket通信的模塊,所以不依賴php-fpm、nginx或者apache等這些容器便可以獨立運行

其中

workerman有兩種進程模型

1、基本的master worker模型

2、master gateway worker模型

master worker模型說明:

master進程為主進程,啟動過程中讀取conf配置,根據每個應用配置中的ip和端口創建監聽socket,然後再根據配置中的進程數創建對應數量的子進程即worker進程,worker進程會自動繼承master進程創建的監聽socket,使得worker進程能夠獨立的接受並處理客戶端的連接。而後master進程進入監聽信號的邏輯中,監聽worker進程退出信號(worker進程退出後,系統會自動向master進程發送一個SIGHCLD信號,mater進程會重新創建子進程,將缺失的子進程補上),master進程還會監聽workermand腳本發來的停止信號(SIGINT)和平滑重啟服務信號(SIGHUP)

worker進程為master進程派生出來的子進程,自動繼承了master進程的監聽socket,每個worker進程獨立的接受並處理客戶端的連接。

master worker模型比較適合業務簡單的應用或者短連接應用

master gateway worker 模型說明:

這種模型多了一個gateway進程組,工作流程與master worker模型基本相同,區別是worker進程不再直接與客戶端打交道,客戶端與worker進程之間多了一個gateway進程,gateway專職處理網絡IO,並維護客戶端的長連接。

master gateway worker 模型非常適合長連接應用

swoole

Swoole是一個面向生產環境的 PHP 異步網絡通信引擎,使 PHP 開發人員可以編寫高性能的異步併發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用於互聯網、移動通信、企業軟件、雲計算、網絡遊戲、物聯網(IOT)、車聯網、智能家居等領域。 使用 PHP + Swoole 作為網絡通信框架,可以使企業 IT 研發團隊的效率大大提升。

Swoole不是一個像Zend Framework、CakePHP、Yii、symfony、ThinkPHP等一樣的框架,也不是一個像WordPress、Drupal、Discuz、UChome等開源產品看齊的項目。 Swoole的目標是向Java框架、Ruby On Rails、Python DjangoPylons等一流框架發起挑戰。

Swoole雖然是標準的PHP擴展,實際上與普通的擴展不同。普通的擴展只是提供一個庫函數。而Swoole擴展在運行後會接管PHP的控制權,進入事件循環。當IO事件發生後底層會自動回調指定的PHP函數。

swoole 底層是純c 編寫,對其他擴展幾乎是零依賴,不需要php傳統環境做依賴。性能更加強悍,許多國內外大公司都會在swoole的基礎上進行二開來滿足自己的業務需求。


分享到:


相關文章: