workerman 對比 swoole 實(shí)際開發(fā)項(xiàng)目中,你會(huì)選擇哪個(gè)?對于新手學(xué)哪個(gè)較好,有什么建議嗎?
網(wǎng)上有評論說swoole性能比workerman高不少,真的是這樣嗎?
我們先來看下各自介紹:
(相關(guān)資料圖)
workerman:開源高性能PHP應(yīng)用容器( github 10.2k)
workerman 是純php寫的網(wǎng)絡(luò)框架,支持高并發(fā),超高穩(wěn)定性,它大大突破了傳統(tǒng)PHP應(yīng)用范圍,被廣泛的用于即時(shí)通訊、APP開發(fā)、小程序開發(fā)、聊天室、手游服務(wù)端、網(wǎng)絡(luò)游戲、硬件通訊、車聯(lián)網(wǎng)、智能家居、物聯(lián)網(wǎng)等領(lǐng)域的開發(fā)。
支持TCP長連接,支持Websocket、HTTP等協(xié)議,支持自定義協(xié)議,擁有異步Mysql、異步Redis、異步Http、MQTT物聯(lián)網(wǎng)客戶端、異步消息隊(duì)列等眾多高性能組件。
Swoole:PHP 協(xié)程框架(github 17.6k)
swoole是c/c++寫的網(wǎng)絡(luò)通訊擴(kuò)展,Swoole 使 PHP 開發(fā)人員可以編寫高性能高并發(fā)的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服務(wù),讓 PHP 不再局限于 Web 領(lǐng)域。
Swoole 可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動(dòng)通信、云計(jì)算、 網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)(IOT)、車聯(lián)網(wǎng)、智能家居等領(lǐng)域。使用 PHP + Swoole 可以使企業(yè) IT 研發(fā)團(tuán)隊(duì)的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。
兩者功能類似
那究竟哪個(gè)更好一些?我們該如何選擇呢?
我們一起來聽聽PHPer的使用感受和看法
一:學(xué)習(xí)成本
首先我們闡述下php中文網(wǎng)的觀點(diǎn):
對于新手,我們更傾向于推薦workerman:簡單,易用,擴(kuò)展性好,可快速上手!php 語言的價(jià)值不就是簡單易用嗎?
目前關(guān)于workerman最新的課程全網(wǎng)很少,所以php中文網(wǎng)近期精心錄制了一套:PHP workerman 基礎(chǔ)到實(shí)戰(zhàn)課程,在今天上線了!
希望能夠幫助到同學(xué)們,提升自己的技能!
課程名稱:
《PHP Workerman+ThinkPHP6 即時(shí)通訊聊天系統(tǒng)》
(ThinkPHP6+Workerman/websocket)
本課程是基于php workerman創(chuàng)建websocket服務(wù)開發(fā)的實(shí)時(shí)web聊天系統(tǒng),課程內(nèi)容主要包括:
1、websoket通信原理以及與http的關(guān)系
2、workerman搭建websoket服務(wù)
3、QQ群聊原理與實(shí)現(xiàn)
4、Workerman消息推送與定時(shí)器
5、一對一私聊與客服隨機(jī)分配
6、客服后臺獲取在線客戶列表等
7、聊天消息存儲等內(nèi)容。
感興趣的同學(xué),趕緊上車,鎖定上新活動(dòng)價(jià)!
限時(shí)折扣活動(dòng):原價(jià)¥399元,限時(shí)折扣價(jià)¥189元,12.8號截止!
全部課程預(yù)計(jì)12.8號之前更新完成,屆時(shí)價(jià)格會(huì)有一定幅度上調(diào)!
開通地址↓↓↓https://www.php.cn/course/1475.html
(課程咨詢+課件資料領(lǐng)?。?/p>
網(wǎng)友們觀點(diǎn):
網(wǎng)友評價(jià)1:
如果你之前沒有過網(wǎng)絡(luò)編程或多進(jìn)程開發(fā)經(jīng)驗(yàn)的話,我的建議是你先從workerman入手,畢竟workerman是純PHP代碼實(shí)現(xiàn)的,你在深入理解其原理和處理問題時(shí)不會(huì)有太大的障礙。
通過對workerman的深入學(xué)習(xí),你可以學(xué)習(xí)到網(wǎng)絡(luò)編程相關(guān)的基礎(chǔ)知識,這種程序是如何設(shè)計(jì)實(shí)現(xiàn)的,當(dāng)中需要注意哪些細(xì)節(jié)。你還可以學(xué)習(xí)到如何開發(fā)多進(jìn)程程序,進(jìn)程間如何管理和通信。
當(dāng)你這些了解清楚后,你再過渡到swoole會(huì)覺得門檻沒有那么高,如果你直接上手就swoole的話,至少進(jìn)程間的管理和通信都需要你自己去實(shí)現(xiàn),你可能連思路都沒有。
由淺入深,先從基礎(chǔ)開始,再向高級進(jìn)階。
網(wǎng)友評價(jià)2:
swoole 是作為 php 的擴(kuò)展,不依賴其他擴(kuò)展,底層是 c,程序中直接調(diào)用,性能較高。workman 是用原生 php,依賴其他擴(kuò)展,需要下載源碼包。
前者可以理解為 swoole 是提供給 php 的 api ,原生度比較高,所以沒有封裝實(shí)踐中的 業(yè)務(wù)邏輯,需要自己開發(fā)。后者對某種業(yè)務(wù)需求有封裝,更容易上手。
本人曾經(jīng)學(xué)習(xí) swoole 個(gè)把月,感覺比較難駕馭,需要掌握比較多的基礎(chǔ)知識,實(shí)際工作中運(yùn)用較少,但是感覺值得學(xué)習(xí)。
總之,用哪個(gè)看用來做什么,大眾需求, workman 可能開發(fā)成本更低,有些特定需求,也可以研究研究 swoole。
網(wǎng)友評價(jià)3:
推薦 workerman!swoole 那套直接 c 拓展的不適合進(jìn)階新手,新手要的是漸進(jìn)式,穩(wěn)定性,循序漸進(jìn),先掌握一個(gè)范式,再一步一步來。
workerman 也出了官方 web 框架 webman,壓測排名在 swoole 之上,毫不夸張的說,workerman 目前是最成熟,成本最低的 PHP 解決方案,門檻還低。
網(wǎng)友評價(jià)4:
swoole是由C語言開發(fā)的php擴(kuò)展類,就性能而言swoole具有優(yōu)勢,對PHP程序員有一定的要求,了解底層通信服務(wù)開發(fā),需要學(xué)習(xí)的知識比較多,swoole一般適合老手開發(fā)。workerman純php開發(fā)框架,很容易上手。號稱只要你會(huì)php,你就使用它開發(fā)socket應(yīng)用服務(wù)。
建議先學(xué)習(xí)workerman,在學(xué)習(xí)swoole。
網(wǎng)友評價(jià)5:
workerman是純PHP實(shí)現(xiàn)的常駐內(nèi)存框架,同步阻塞模式,先學(xué)習(xí)這個(gè)方便對常駐內(nèi)存模式有一定的了解,對內(nèi)存泄露有一定的了解。
workerman熟悉后再來學(xué)習(xí)swoole,swoole除了常駐內(nèi)存,還有就是協(xié)程,這個(gè)在傳統(tǒng)開發(fā)模式中是不存在的。協(xié)程類似線程,開發(fā)過程中需要主要各個(gè)協(xié)程中間的數(shù)據(jù)之間的操作問題。
二:實(shí)際應(yīng)用
網(wǎng)友評價(jià)1:
我的一個(gè)開源項(xiàng)目用的就是 workerman 項(xiàng)目查看,依賴的環(huán)境比較少,開發(fā)難度小。如果不是上萬的并發(fā)建議 workerman。但是我的經(jīng)驗(yàn)表明 95% 的項(xiàng)目都不會(huì)有上萬的并發(fā)。初學(xué)者我也建議用 workerman。swoole 你也可以同時(shí)學(xué)習(xí),畢竟協(xié)程更節(jié)省硬件資源。還有就是 workerman 的作者超級有耐心回復(fù)各種問題,從來沒有見過如此熱心的
網(wǎng)友評價(jià)2:
swoole 是擴(kuò)展,在使用 workerman 的同時(shí),若你需要用到 swoole 的東西,同樣也可以使用,而且從應(yīng)用角度來說,我更喜歡 workerman gateworker。這些能直接解決很多問題,避免從基礎(chǔ)進(jìn)行研究
網(wǎng)友評價(jià)3:
workerman 更簡單穩(wěn)定,考慮了很久還是用workerman , swoole目前太亂了,生產(chǎn)環(huán)境穩(wěn)定畢竟用的php原生東西 swoole玩了一段時(shí)間 坑太多了。
網(wǎng)友評價(jià)4:
Swoole的部署折騰了我一個(gè)禮拜,終于能跑通了,再想想還要很多第三方類庫和擴(kuò)展要繼續(xù)折騰,還是算了。
Gatewayworker直接用XFTP工具把文件夾拖進(jìn)去,然后start就好了,省心多了。
對于我這種小白來說,不考慮什么集群,什么上千萬的并發(fā),什么容器,我選Gatewaywroker。
網(wǎng)友評價(jià)5:
個(gè)人覺得swoole和workerman都能解決高并發(fā)io問題,但用了兩種思路。不存在誰高級,誰低級。用C寫PHP擴(kuò)展解決問題就顯得有多牛逼了,那可不見得。用C寫PHP擴(kuò)展,對比的應(yīng)該是C程序員,而不是PHP程序員,那么C語言就比PHP語言高級,那這么說的話大家都用C開發(fā)網(wǎng)站得了唄。
新課推薦:
三:性能
網(wǎng)友評價(jià)1:
說swoole比workerman好,是因?yàn)樵u論的人沒用過workerman,他只是片面的認(rèn)為c++比php快,就認(rèn)為其程序框架也是這樣。
然而,workerman只載入解析一次php文件,然后便常駐內(nèi)存,極大的減少了磁盤IO及PHP中請求初始化、創(chuàng)建執(zhí)行環(huán)境、詞法解析、語法解析、編譯opcode、請求關(guān)閉等諸多耗時(shí)過程。所以純碎從語言層面比較,更應(yīng)該是c++和機(jī)器碼的區(qū)別。
兩者都是非常優(yōu)秀的開源框架,只是看自己更喜歡折騰c++還是php罷了
網(wǎng)友評價(jià)2:
其實(shí)性能差不多,workerman更穩(wěn)定,發(fā)現(xiàn)問題,更易維護(hù)
網(wǎng)友評價(jià)3:
從跑分來每個(gè)指標(biāo)workerman都比swoole略高一些,總體來看看swoole和workerman結(jié)果差不多,不過這僅僅是跑分,真實(shí)效果還是要看實(shí)際項(xiàng)目。
網(wǎng)友評價(jià)4:
我覺得是不是都搞錯(cuò)了對比雙方
workman是PHP寫的,但本質(zhì)是用pcntl等擴(kuò)展實(shí)現(xiàn)了功能
swoole是C/C++寫的,但實(shí)際還是以PHP擴(kuò)展形式出現(xiàn)
所以其實(shí)都是PHP擴(kuò)展
所以其實(shí)比的是pcntl等擴(kuò)展和swoole擴(kuò)展的效能
所以workman不慢不是很正常么?
網(wǎng)友評價(jià)5:
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=db&l=zik073-1r
這個(gè)是國外權(quán)威壓測機(jī)構(gòu) www.techempower.com 第19輪壓測,帶數(shù)據(jù)庫業(yè)務(wù)的,swoole用了數(shù)據(jù)庫連接池+協(xié)程,workerman就是原始php mysql阻塞用法,結(jié)論仍然是二者性能差別不大,各項(xiàng)性能指標(biāo)均是workerman好些,尤其是plaintext,比swoole高35%左右。當(dāng)然,這個(gè)只是壓測結(jié)果,僅有部分參考意義,不代表現(xiàn)實(shí)項(xiàng)目最終結(jié)果。
新課推薦:
四:生態(tài)
網(wǎng)友評價(jià)1:
因?yàn)轫?xiàng)目需要, 智能家居一類的, 本來準(zhǔn)備用C做, 想想swoole和workerman很火很成熟, 不少穩(wěn)定應(yīng)用場景了, 想想為什么不能用這倆試一下呢? C水平有限, 用PHP能滿足需求多好?
所以今天大概了解了下swoole和workerman, 初步映象對swoole沒有想象中那么好, 反而workerman讓我非常驚艷...
先說swoole:
swoole, 官網(wǎng)頂部手冊竟然打不開, 后來找半天找到一個(gè)手冊. 你們這么nb團(tuán)隊(duì)為何不能把官網(wǎng)做的像樣一點(diǎn)呢? 需要很多工作量嗎? 至少把官網(wǎng)頂部那個(gè)手冊改為正確地址好不好?遇到問題找了一圈沒找到啥解決辦法. 發(fā)了issues, 論壇也發(fā)帖了, 沒啥反應(yīng)...
再說workerman:
workerman例子很完善, 講解詳細(xì), 比swoole好不少. 重要一點(diǎn)是用純PHP就能實(shí)現(xiàn)如此之高性能php-cli在php5.3時(shí)代就已經(jīng)成熟了, 一直沒時(shí)間在此基礎(chǔ)做大型項(xiàng)目, 老是感覺性能不行, workerman卻讓我驚艷.
workerman用到的pcntl, posix兩個(gè)擴(kuò)展也是PHP自帶的擴(kuò)展, 默認(rèn)會(huì)編譯進(jìn)去, streams系列函數(shù)是PHP自帶函數(shù), 更沒有擴(kuò)展之說. 所以某人說的太夸張了. 并不需要不成熟第三方擴(kuò)展, 這兩個(gè)擴(kuò)展是非常成熟的擴(kuò)展, 穩(wěn)定到進(jìn)入PHP默認(rèn)開啟的擴(kuò)展, streams甚至進(jìn)入PHP基本函數(shù)了. 如果為了像Nginx一樣開啟Kqueue和Epoll則需要安裝和swoole一樣的pecl擴(kuò)展:pecl-event. 此擴(kuò)展也非常穩(wěn)定了. 這些都是基本擴(kuò)展, 不會(huì)不穩(wěn)定更不會(huì)PHP7,PHP8不支持. streams, pcntl, posix, pecl-event其實(shí)對底層的淺封裝, 性能沒問題, 看你怎么用, 會(huì)不會(huì)用, workerman就用的很好。
最后說一下:
我不同意韓天峰說的swoole需要比較高超水平, 其實(shí)兩者都是給你封裝好, 拿來用就行. 但如果出現(xiàn)問題workerman可以去了解協(xié)議, 修改封裝的PHP代碼. swoole就沒法修改了, 至少你要會(huì)C語言才能去修改, 這是很多phper不擅長的.
我暫時(shí)決定用workerman了, 因?yàn)槌霈F(xiàn)上述那種問題我可以自己修改workerman的PHP代碼解決. 而swoole是用C重新實(shí)現(xiàn)的, 很多坑要去完善, 而社區(qū)也不活躍, 沒人理睬, 而我沒精力去查C代碼找原因. 發(fā)現(xiàn)很多人也是試驗(yàn)了swoole后發(fā)現(xiàn)還是workerman穩(wěn)定些, 所以改用workerman了. 其實(shí)我還是希望swoole能快速發(fā)展的完善些.
以上純屬個(gè)人觀點(diǎn), 一切都是為了PHP能健康快速發(fā)展下去, 希望swoole越來越好...
網(wǎng)友評價(jià)2:
其實(shí)都差不多,如果直接基于swoole或者workerman開發(fā),都不算容易。
但現(xiàn)在都可以基于框架開發(fā),比如hyperf和webman,當(dāng)然,如果你也試試imi,你會(huì)發(fā)現(xiàn)他倆在使用的時(shí)候,基本沒區(qū)別。
Imi說,反正我都支持!
網(wǎng)友評價(jià)3:
workerman的文檔做的非常好,例子也豐富很多,我覺得workerman更容易上手,而且比swoole穩(wěn)定很多
網(wǎng)友評價(jià)4:
官方方案fpm+opcache+jit+長連接,或者workerman,穩(wěn)如老狗,官方方案,有問題自己輕松解決。
實(shí)在沒有辦法可以引入第三方語言綜合即可。如果你關(guān)注PHP官方的協(xié)程或者異步方案,可以瀏覽下Amphp作者推出的Fiber擴(kuò)展,已經(jīng)進(jìn)入rfc階段。
網(wǎng)友評價(jià)5:
workerman更符合php的精神,作為一個(gè)workerman一年多使用者,堅(jiān)決支持workerman。而且workor真的特別認(rèn)真,新手問題在論壇回復(fù)的也很及時(shí),對新手友好度max。
精品課推薦:
1.ThinkPHP版:《PHP Workerman 基礎(chǔ)與實(shí)戰(zhàn):即時(shí)通訊聊天系統(tǒng)》(2022.11.30最新上線)
(原價(jià)¥399元,上新折扣價(jià)¥189元,僅限8天)
開通地址↓↓↓https://www.php.cn/course/1475.html
2.Laravel版:《基于workerman仿百度商橋IM即時(shí)通訊(Laravel實(shí)戰(zhàn))》(2020.10.12上線)
(原價(jià)¥299元,限時(shí)折扣價(jià)¥139元,僅限8天)
開通地址↓↓↓https://www.php.cn/course/1131.html
(課程咨詢+課件資料領(lǐng)取)
以上PHPer的觀點(diǎn)你贊同嗎?歡迎高手們來噴!