搜尋
首頁php框架Swooleworkerman和swoole有什麼差別

區別:1、swoole是使用C語言實現的socket通訊框架,而workerman是使用純php實現的socket框架;2、workerman中socket是由worker進程負責的,swoole則是由主進程中的reactor線程來負責的。

workerman和swoole有什麼差別

本教學操作環境:Windows10系統、Swoole4版、DELL G3電腦

workerman和swoole有什麼不同

# workerman和swoole在現階段很受爭議,有時間你得認識認識,不然你就不是混php圈的。 swoole是使用C語言實現的socket通訊框架,workerman則是使用純php實現的socket框架,二者進程模型上也存在著許多的不同。

master行程

這個行程比較複雜,也是我認為最核心的行程,這是一個包含多執行緒的進程,分別是一個主執行緒和n個reactor線程(數量可以配置)。

其中,主線程用於accept新的連接,然後評估一下每個reactor線程負責維護的連接數,然後分配給數量最少的那個reactor線程,最大程度保證每個reactor線程的負載量是均衡的。

本質上講,一旦一個socket可讀或可寫了,就由reactor線程發送給worker進程或者發送會客戶端。除此之外,主線程還負責對所有訊號的接管,避免reactor線程收到訊號的打擾中斷。

說的洋氣點兒就是:master進程負責了連接的accept、託管、socket的可讀可寫(資料的發送和接受),本質上講,master進程負責了IO。還需要注意一點兒的是reactor線程是徹底的全非同步非阻塞工作方式。

manager進程

manager進程是worker進程和taskworker進程的媽,說的洋氣點兒就是manager進程fork出來了worker進程和taskworker進程,生出來了就得管,所以,manager進程得負責對worker進程和taskworker進程的撫養義務,具體包括監控它們的狀態、當它們意外掛了後重新拉起一個新的進程(避免了殭屍進程)、平滑重啟(就是傳說中的reload)。

worker進程

worker進程是manager進程fork出來的,這個進程說白了就是搬磚工作(官方文件中屢次提到的業務代碼),其實就是平常碼的那些curd業務邏輯程式碼,懂了吧?只不過worker進程比較diao的是,這個行程可以用非同步方式去運作,也可以用同步方式去工作。如果聽不懂什麼意思,那就先背過,先混個臉熟再說。

taskworker進程

taskworker進程(後文稱為tasker進程)實際上本質上也是worker進程,只不過是一種特殊的worker進程。如果你的worker進程中存在一些耗時耗力的操作,那麼可以先拋給tasker進程,自己先去幹別的,等tasker乾完了,再由worker進程取回,非常diao。但是tasker進程只能工作在同步方式下,並不能使用非同步。這就是為什麼tasker進程不可以使用定時器,而worker進程可以使用定時器的原因。

簡單總結混在一起說下這幾種進程之間是怎麼搭配起來工作的。見說來說,就是master進程就是接活兒的銷售,但是具體幹活則由worker進程來做,如果worker進程感覺到某些流程太繁忙複雜就可以讓tasker進程來做。而manager進程就是後勤worker進程和takser進程的人力資源保障部,負責他們的生死存亡和吃喝拉撒。

workerman

而workerman的進程模型相對就要簡單很多了,首先相對於swoole來說,workerman沒有swoole中的reator線程,其次workerman沒有用於處理普通業務的worker進程以及tasker進程。而workerman的話,socket是由worker進程負責的,swoole中則是由主進程中的reactor線程來負責的。而swoole在接受到資料後,可以透過自己的worker進程來處理業務(有點類似fpm進程)。

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

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

推薦學習:swoole教程

以上是workerman和swoole有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)