workerman和swoole有什麼差別
Feb 10, 2022 pm 01:34 PM區(qū)別:1、swoole是使用C語(yǔ)言實(shí)現(xiàn)的socket通訊框架,而workerman是使用純php實(shí)現(xiàn)的socket框架;2、workerman中socket是由worker進(jìn)程負(fù)責(zé)的,swoole則是由主進(jìn)程中的reactor線程來(lái)負(fù)責(zé)的。
本教學(xué)操作環(huán)境:Windows10系統(tǒng)、Swoole4版、DELL G3電腦
workerman和swoole有什麼不同
# workerman和swoole在現(xiàn)階段很受爭(zhēng)議,有時(shí)間你得認(rèn)識(shí)認(rèn)識(shí),不然你就不是混php圈的。 swoole是使用C語(yǔ)言實(shí)現(xiàn)的socket通訊框架,workerman則是使用純php實(shí)現(xiàn)的socket框架,二者進(jìn)程模型上也存在著許多的不同。
master行程
這個(gè)行程比較複雜,也是我認(rèn)為最核心的行程,這是一個(gè)包含多執(zhí)行緒的進(jìn)程,分別是一個(gè)主執(zhí)行緒和n個(gè)reactor線程(數(shù)量可以配置)。
其中,主線程用於accept新的連接,然後評(píng)估一下每個(gè)reactor線程負(fù)責(zé)維護(hù)的連接數(shù),然後分配給數(shù)量最少的那個(gè)reactor線程,最大程度保證每個(gè)reactor線程的負(fù)載量是均衡的。
本質(zhì)上講,一旦一個(gè)socket可讀或可寫了,就由reactor線程發(fā)送給worker進(jìn)程或者發(fā)送會(huì)客戶端。除此之外,主線程還負(fù)責(zé)對(duì)所有訊號(hào)的接管,避免reactor線程收到訊號(hào)的打擾中斷。
說(shuō)的洋氣點(diǎn)兒就是:master進(jìn)程負(fù)責(zé)了連接的accept、託管、socket的可讀可寫(資料的發(fā)送和接受),本質(zhì)上講,master進(jìn)程負(fù)責(zé)了IO。還需要注意一點(diǎn)兒的是reactor線程是徹底的全非同步非阻塞工作方式。
manager進(jìn)程
manager進(jìn)程是worker進(jìn)程和taskworker進(jìn)程的媽,說(shuō)的洋氣點(diǎn)兒就是manager進(jìn)程fork出來(lái)了worker進(jìn)程和taskworker進(jìn)程,生出來(lái)了就得管,所以,manager進(jìn)程得負(fù)責(zé)對(duì)worker進(jìn)程和taskworker進(jìn)程的撫養(yǎng)義務(wù),具體包括監(jiān)控它們的狀態(tài)、當(dāng)它們意外掛了後重新拉起一個(gè)新的進(jìn)程(避免了殭屍進(jìn)程)、平滑重啟(就是傳說(shuō)中的reload)。
worker進(jìn)程
worker進(jìn)程是manager進(jìn)程fork出來(lái)的,這個(gè)進(jìn)程說(shuō)白了就是搬磚工作(官方文件中屢次提到的業(yè)務(wù)代碼),其實(shí)就是平常碼的那些curd業(yè)務(wù)邏輯程式碼,懂了吧?只不過(guò)worker進(jìn)程比較diao的是,這個(gè)行程可以用非同步方式去運(yùn)作,也可以用同步方式去工作。如果聽(tīng)不懂什麼意思,那就先背過(guò),先混個(gè)臉熟再說(shuō)。
taskworker進(jìn)程
taskworker進(jìn)程(後文稱為tasker進(jìn)程)實(shí)際上本質(zhì)上也是worker進(jìn)程,只不過(guò)是一種特殊的worker進(jìn)程。如果你的worker進(jìn)程中存在一些耗時(shí)耗力的操作,那麼可以先拋給tasker進(jìn)程,自己先去幹別的,等tasker乾完了,再由worker進(jìn)程取回,非常diao。但是tasker進(jìn)程只能工作在同步方式下,並不能使用非同步。這就是為什麼tasker進(jìn)程不可以使用定時(shí)器,而worker進(jìn)程可以使用定時(shí)器的原因。
簡(jiǎn)單總結(jié)混在一起說(shuō)下這幾種進(jìn)程之間是怎麼搭配起來(lái)工作的。見(jiàn)說(shuō)來(lái)說(shuō),就是master進(jìn)程就是接活兒的銷售,但是具體幹活則由worker進(jìn)程來(lái)做,如果worker進(jìn)程感覺(jué)到某些流程太繁忙複雜就可以讓tasker進(jìn)程來(lái)做。而manager進(jìn)程就是後勤worker進(jìn)程和takser進(jìn)程的人力資源保障部,負(fù)責(zé)他們的生死存亡和吃喝拉撒。
workerman
而workerman的進(jìn)程模型相對(duì)就要簡(jiǎn)單很多了,首先相對(duì)於swoole來(lái)說(shuō),workerman沒(méi)有swoole中的reator線程,其次workerman沒(méi)有用於處理普通業(yè)務(wù)的worker進(jìn)程以及tasker進(jìn)程。而workerman的話,socket是由worker進(jìn)程負(fù)責(zé)的,swoole中則是由主進(jìn)程中的reactor線程來(lái)負(fù)責(zé)的。而swoole在接受到資料後,可以透過(guò)自己的worker進(jìn)程來(lái)處理業(yè)務(wù)(有點(diǎn)類似fpm進(jìn)程)。
workerman是高效能的PHP?socket?伺服器框架,workerman基於PHP多重進(jìn)程以及l(fā)ibevent事件輪詢庫(kù),PHP開(kāi)發(fā)者只要實(shí)作一兩個(gè)接口,便可以開(kāi)發(fā)出自己的網(wǎng)路應(yīng)用,例如Rpc服務(wù)、聊天室伺服器、手機(jī)遊戲伺服器等。
workerman的目標(biāo)是讓PHP開(kāi)發(fā)者更容易的開(kāi)發(fā)出基於socket的高效能的應(yīng)用服務(wù),而不用去了解PHP?socket以及PHP多進(jìn)程細(xì)節(jié)。 workerman本身就是一個(gè)PHP多進(jìn)程伺服器框架,具有PHP進(jìn)程管理以及socket通訊的模組,所以不依賴php-fpm、nginx或apache等這些容器便可以獨(dú)立運(yùn)行
推薦學(xué)習(xí):swoole教程
以上是workerman和swoole有什麼差別的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

Laravel 中使用 Swoole 協(xié)程可以並發(fā)處理大量請(qǐng)求,優(yōu)點(diǎn)包括:同時(shí)處理:允許同時(shí)處理多個(gè)請(qǐng)求。高效能:基於 Linux epoll 事件機(jī)制,高效處理請(qǐng)求。低資源消耗:所需伺服器資源更少。易於整合:與 Laravel 框架無(wú)縫集成,使用簡(jiǎn)單。

如何使用Swoole實(shí)現(xiàn)高效能的HTTP反向代理伺服器Swoole是一款基於PHP語(yǔ)言的高效能、非同步、並發(fā)的網(wǎng)路通訊框架。它提供了一系列的網(wǎng)路功能,可以用來(lái)實(shí)作HTTP伺服器、WebSocket伺服器等。在本文中,我們將介紹如何使用Swoole來(lái)實(shí)作一個(gè)高效能的HTTP反向代理伺服器,並提供具體的程式碼範(fàn)例。環(huán)境配置首先,我們需要在伺服器上安裝Swoole擴(kuò)展

Swoole 和 Workerman 都是高效能 PHP 伺服器框架。 Swoole 以其非同步處理、出色的效能和可擴(kuò)展性而聞名,適用於需要處理大量並發(fā)請(qǐng)求和高吞吐量的專案。 Workerman 提供了非同步和同步模式的靈活性,具有直覺(jué)的 API,更適合易用性和處理較低並發(fā)量的專案。

效能比較:吞吐量:Swoole 以協(xié)程機(jī)制,吞吐量更高。延遲:Swoole 的協(xié)程上下文切換開(kāi)銷更低,延遲更小。記憶體消耗:Swoole 的協(xié)程佔(zhàn)用記憶體較少。易用性:Swoole 提供更易於使用的並發(fā)程式設(shè)計(jì) API。

若要重新啟動(dòng) Swoole 服務(wù),請(qǐng)依照下列步驟操作:檢查服務(wù)狀態(tài)並取得 PID。使用 "kill -15 PID" 停止服務(wù)。使用啟動(dòng)服務(wù)的相同命令重新啟動(dòng)服務(wù)。

Swoole實(shí)戰(zhàn):如何使用協(xié)程進(jìn)行並發(fā)任務(wù)處理引言在日常的開(kāi)發(fā)中,我們常常會(huì)遇到需要同時(shí)處理多個(gè)任務(wù)的情況。傳統(tǒng)的處理方式是使用多執(zhí)行緒或多進(jìn)程來(lái)實(shí)現(xiàn)並發(fā)處理,但這種方式在效能和資源消耗上存在一定的問(wèn)題。而PHP作為一門腳本語(yǔ)言,通常無(wú)法直接使用多執(zhí)行緒或多進(jìn)程的方式來(lái)處理任務(wù)。然而,借助於Swoole協(xié)程庫(kù),我們可以使用協(xié)程來(lái)實(shí)現(xiàn)高效能的並發(fā)任務(wù)處理。本文將介

Swoole Process 中可讓使用者切換,具體操作步驟為:建立進(jìn)程;設(shè)定進(jìn)程使用者;啟動(dòng)進(jìn)程。

Swoole是一個(gè)高效能的PHP協(xié)程網(wǎng)路框架,支援非同步IO、多進(jìn)程、多執(zhí)行緒、協(xié)程等特性。其中,Swoole提供的WebSocket元件可用於實(shí)現(xiàn)即時(shí)雙向通信,是建立即時(shí)應(yīng)用的理想選擇。本文將介紹如何使用Swoole實(shí)現(xiàn)WebSocket通信,並提供具體的程式碼範(fàn)例。一、環(huán)境準(zhǔn)備在使用Swoole實(shí)作WebSocket通訊前,需要確保已安裝Swoole擴(kuò)充功能??赏?/p>
