workerman和swoole有什么區(qū)別
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é)的。
本教程操作環(huán)境:Windows10系統(tǒng)、Swoole4版、DELL G3電腦
workerman和swoole有什么區(qū)別
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進(jìn)程
這個(gè)進(jìn)程比較復(fù)雜,也是我認(rèn)為最核心的進(jìn)程,這是一個(gè)包含多線程的進(jìn)程,分別是一個(gè)主線程和n個(gè)reactor線程(數(shù)量可以配置)。
其中,主線程用于accept新的連接,然后評(píng)估一下每個(gè)reactor線程負(fù)責(zé)維護(hù)的連接數(shù),然后分配給數(shù)量最少的那個(gè)reactor線程,最大程度保證每個(gè)reactor線程的負(fù)載量是均衡的。
本質(zhì)上講,一旦一個(gè)socket可讀或者可寫(xiě)了,就由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的可讀可寫(xiě)(數(shù)據(jù)的發(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í)就是平時(shí)碼的那些curd業(yè)務(wù)邏輯代碼,懂了吧?只不過(guò)worker進(jìn)程比較diao的是,這個(gè)進(jì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)程就是接活兒的銷(xiāo)售,但是具體干活則由worker進(jìn)程來(lái)做,如果worker進(jìn)程感覺(jué)到某些流程太繁忙復(fù)雜就可以讓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在接受到數(shù)據(jù)后,可以通過(guò)自己的worker進(jìn)程來(lái)處理業(yè)務(wù)(有點(diǎn)兒類似于fpm進(jìn)程)。
workerman是一個(gè)高性能的PHP?socket?服務(wù)器框架,workerman基于PHP多進(jìn)程以及l(fā)ibevent事件輪詢庫(kù),PHP開(kāi)發(fā)者只要實(shí)現(xiàn)一兩個(gè)接口,便可以開(kāi)發(fā)出自己的網(wǎng)絡(luò)應(yīng)用,例如Rpc服務(wù)、聊天室服務(wù)器、手機(jī)游戲服務(wù)器等。
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)程服務(wù)器框架,具有PHP進(jìn)程管理以及socket通信的模塊,所以不依賴php-fpm、nginx或者apache等這些容器便可以獨(dú)立運(yùn)行
推薦學(xué)習(xí): swoole教程
以上是workerman和swoole有什么區(qū)別的詳細(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脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++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)勢(shì)包括:并發(fā)處理:允許同時(shí)處理多個(gè)請(qǐng)求。高性能:基于 Linux epoll 事件機(jī)制,高效處理請(qǐng)求。低資源消耗:所需服務(wù)器資源更少。易于集成:與 Laravel 框架無(wú)縫集成,使用簡(jiǎn)單。

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

Swoole 和 Workerman 都是高性能 PHP 服務(wù)器框架。Swoole 以其異步處理、出色的性能和可擴(kuò)展性而聞名,適用于需要處理大量并發(fā)請(qǐng)求和高吞吐量的項(xiàng)目。Workerman 提供了異步和同步模式的靈活性,具有直觀的 API,更適合易用性和處理較低并發(fā)量的項(xiàng)目。

性能比較:吞吐量:Swoole 憑借協(xié)程機(jī)制,吞吐量更高。延遲:Swoole 的協(xié)程上下文切換開(kāi)銷(xiāo)更低,延遲更小。內(nèi)存消耗:Swoole 的協(xié)程占用內(nèi)存更少。易用性:Swoole 提供更易于使用的并發(fā)編程 API。

要重啟 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)的處理方式是使用多線程或多進(jìn)程來(lái)實(shí)現(xiàn)并發(fā)處理,但這種方式在性能和資源消耗上存在一定的問(wèn)題。而PHP作為一門(mén)腳本語(yǔ)言,通常無(wú)法直接使用多線程或多進(jìn)程的方式來(lái)處理任務(wù)。然而,借助于Swoole協(xié)程庫(kù),我們可以使用協(xié)程來(lái)實(shí)現(xiàn)高性能的并發(fā)任務(wù)處理。本文將介

Swoole Process 中可以讓用戶切換,具體操作步驟為:創(chuàng)建進(jìn)程;設(shè)置進(jìn)程用戶;啟動(dòng)進(jìn)程。

Swoole是一個(gè)高性能的PHP協(xié)程網(wǎng)絡(luò)框架,支持異步IO、多進(jìn)程、多線程、協(xié)程等特性。其中,Swoole提供的WebSocket組件可用于實(shí)現(xiàn)實(shí)時(shí)雙向通信,是構(gòu)建實(shí)時(shí)應(yīng)用的理想選擇。本文將介紹如何使用Swoole實(shí)現(xiàn)WebSocket通信,并提供具體的代碼示例。一、環(huán)境準(zhǔn)備在使用Swoole實(shí)現(xiàn)WebSocket通信前,需要確保已安裝Swoole擴(kuò)展。可通
