swoole和workerman哪個更易開發?

先mark後作答

利益相關,workerman鐵杆用戶


1、swoole是C語言寫的,性能好一點,workerman底層是PHP好理解一點;

2、swoole社區和開發者不活躍,workerman開發者相對活躍,有長期維護;

3、不考慮性能的話,推薦workerman;

4、別覺得不同語言的底層實現會有高低之分,一切按需求來


「Swoole是給高手用的,門檻比較高,需要使用者有深厚的功底」,這句話是swoole老大韓天峰韓老師的回答。其實韓老師不是瞧不起phper,而是認為不會C語言,不會Unix環境高級編程的根本不配做phper,低端人口不配用swooler。

個人覺得swoole和workerman都能解決高並發io問題,但用了兩種思路。不存在誰高級,誰低級。用C寫PHP擴展解決問題就顯得有多牛逼了,那可不見得。用C寫PHP擴展,對比的應該是C程序員,而不是PHP程序員,那麼C語言就比PHP語言高級,那這麼說的話大家都用C開發網站得了唄。

簡單試用了兩個框架,說說初期體驗。

  1. 安裝和環境需求:
    1. swoole是c寫的php擴展,需要有一個安裝擴展的過程,但是workerman為了性能,也需要安裝event擴展。所以複雜度都差不多。
    2. 韓老師所說的「外部依賴上workerman需要依賴很多額外的第三方PHP擴展來實現,局限性比較大,這些擴展並非是PHP官方維護的,維護性方面良莠不齊,有些擴展連PHP7都不支持,數年沒人維護」是不存在的。workerman一共只需要2個擴展,pcntl擴展和posix擴展,兩個擴展都不是什麼良莠不齊,PHP7不支持。我本人就是在php7.0安裝的swoole和workerman,並且這兩個擴展是原來就存在的。如果說使用擴展不好的話,swoole自己就是擴展呀。
  2. 文檔方面:
    1. swoole一共有3種文檔:中文wiki版,英文版,英文git版。不要要求swoole能把文檔寫好,只要能寫全了佛祖保佑吧。中文版我的體驗不太好,主要是不夠新,文檔結構很亂。英文版可能是由英文git版生成的,但是缺少大塊的內容。英文git版應該是比較全的,只發現少量的url 404錯誤,但是可以自己去源碼中找回。我建議swoole新手把git版英文版、中文版文檔結合著看。建議新手不要對官方文檔期質量待過高,只看中文版,那你會掉坑裡。一方面覺得新手不夠高級天天掉坑,另一方面文檔又不給解釋清楚怎麼用,總感覺到哪裡不對是不是?如果你天真的去官網提出你的想法,嗯,你會遇到一個傲慢的老者讓你翻看《舊約》100頁後再來提意見。
    2. workerman就簡單多了。中英文兩個文檔,結構清晰,整個框架有什麼東西一目了然。但是workerman框架本來就內容很少。workerman官網有個非常噁心的地方,進入網頁會一聲巨響,而且每次進入都會巨響。
  3. 內容:
    1. swoole:可能是因為要進行更高定製化的網路編程 ,swoole包含了一些相對於一般php-fpm編程中見不到的進程、線程等概念和解決方案,還包括某些非同步IO場景的解決方案。2.x還包含了協程概念,想要一次性跨過node.js 這種非同步語言所經歷的callback地獄的黑暗時期。官方的定位是《使 PHP 開發人員可以編寫高性能的非同步並發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務》。也就是說,swoole不光是提供了解決方案,還要改變你的編程習慣。
    2. workerman:提供高並發的tcp/udp/websocket/http server和client端解決方案。官方的定位是《開源高性能的PHP socket 伺服器框架》。
    3. 兩者都是常駐內存,也就是都用php命令行啟動應用。不是傳統的php-fpm場景。
  4. 使用習慣:
    1. swoole的這些概念看似高大上,可用起來會發現,限制還挺多的,具體自己體驗吧。而且設計思路好像不太一樣,每種技術解決方案都用各自的思路,用戶整體使用起來會感覺到不夠連貫。我猜想c程序員或java程序員用起來應該沒有障礙,因為他們開始就必須考慮內存常駐、進程通信、內存使用等問題。
    2. workerman:非常簡單易用,整個框架就一個worker概念,使用起來就是worker里套worker,或者worker和worker通信。用戶根本不需要過多考慮進程或並發的細節,傳統的php-fpm程序員一用就會。
  5. 也許以後會有真正使用後的深度使用評測、性能評測。兩者都可以做高性能網路服務,但兩者思路不一樣,內容不一樣,我想兩者的最終目的肯定更不會一樣,有些地方是沒有可比性的。本人是一個小學生,水平太次,有讓誰不高興的地方,歡迎來噴,我喜歡看到別人真實的觀點,當然也可以忽略我,畢竟高手太多了。


就個人觀點來說,更傾向於workerman,至於原因: 簡單,易用,擴展性好。php 語言的價值不就是簡單易用嗎?

至於所說的提高水平,用swoole和用workerman,水平都沒啥提高吧。只是了解了一些以前php沒有的東西和概念,真正的提高是你去搞清楚底層實現。so,不要說我用了swoole或者用了workerman,水平就提高了。

如果php真的要提高水平,不管你用的是swoole和workerman,都應該去研究下底層的實現,進程模型,epoll,驚群,網路編程,這些才是真正提高水平的。

另外,建議學習另外一門靜態語言,golang是一個不錯的選擇,比如說嘗試用golang實現一個簡單的中間件,回來再看workerman 和swoole,很多東西就瞭然了,至於選擇什麼,根據團隊情況而定


文檔還是workerman寫的更好.一看便知


用easyswoole吧


workerman更容易,學習方便


http://www.workerman.net/

workman的官網打不開了~~~


Swoole是給高手用的,門檻比較高,需要使用者有深厚的功底。你這裡問的哪個更容易開發,這個沒辦法回答,這個要看你要開發什麼、團隊或個人的實際情況如何,合適的才是最好的。

這句話深深地感受到大佬的惡意。確實感受到swoole擴展帶來的好處。對於基本Socket還未涉獵的我。談到高並發優化聞風喪膽 /手動震驚沒有這方面基礎 看文檔也一知半解。還是先看看TCP協議吧。。


swoole 和 workerman 這兩個,我都用過,優點就不說了,先談缺點, swoole 複雜相對較高,還要安裝,需要多下功夫,workerman 比較容易上手,文檔也齊全,還有視頻. swoole就差點了,但不影響. 目前是PHP7版本,使用swoole是完全不用擔心了.workerman 待更新


推薦hprose


workman沒接觸過,接觸過swool,感覺還是很不錯的,功能很強大,如果你要實現的功能不麻煩,swool 也可以實現的,並且容易的話,建議swool


推薦閱讀:

TAG:PHP | Web伺服器 | WebSocket | Swoole | workerman |

分頁阅读: 1 2