swoole在php圈火了這麼久,從2年前我用node寫socket聊天伺服器的時候就火了,那時候,經常有類似的文章php+swoole完爆nodejs
之類的文章來吸引眼球,先不說它的好與壞,單單說他的出現,確實給php注入了一股新的活力。
首先,php是單程序的,沒法在乙個程式塊中使用多程序來處理乙個複雜的邏輯,即使後來出現了pcntl_fork
模組來處理多程序,但是它比較雞肋,並不適用於windows
平台,其實最大的問題是它使用起來非常之複雜和繁瑣,難以理解。
其次,php並不支援非同步,這一點恰恰是nodejs
平台所擅長的。所以,在處理一些高併發高負載的請求的時候,我們往往會考慮用nodejs
來做。
再者,php並不適合做tcp,socket之類的長連線,第一是效能問題,第二,我個人覺得還是複雜和繁瑣,使用起來會非常吃力,特別是對socket, tcp/udp, 網路io等底層的東西並不是很熟悉(比如現在的我)的時候,用起來更是吃力。
那麼,有沒有一種辦法,能夠讓php很好的支援非同步、非同步、簡單的使用tcp/udp/socket服務呢。噹噹當。swoole應運而生了!!!
官網是: ,是大神韓天峰(rango)
的作品,我有幸在b站的一次技術會議上,見到了大神,很平易近人的乙個大叔。
swoole
發音為死沃爾
, 並不是死喔了
, 官網給它的介紹是:
swoole是php的非同步、並行、高效能網路通訊引擎,使用純c語言編寫,提供了php語言的非同步多執行緒伺服器,非同步tcp/udp網路客戶端,非同步mysql,非同步redis,資料庫連線池,asynctask,訊息佇列,毫秒定時器,非同步檔案讀寫,非同步dns查詢。 swoole內建了http/websocket伺服器端/客戶端、http2.0伺服器端。先不說這些玩意兒怎麼用,但看這些描述,簡直就是吊炸天啊,沒swoole之前,基本是在用其他的語言諸如
c++
,go
等靜態語言來寫這些服務了,而現在,phper們,你們完全可以用swoole協助用php語言寫這些牛逼的玩意了。
在進行系統的學習swoole之前,先來說下swoole的原理和機制,我覺得知道了會對它有乙個大致的了解。
swoole雖然是標準的php擴充套件,實際上與普通的擴充套件不同。普通的擴充套件只是提供乙個庫函式。而swoole擴充套件在執行後會接管php的控制權,進入事件迴圈。當io事件發生後,swoole會自動**指定的php函式。
也就是說,swoole就是個披了php外衣的nginx,大量的功能都是用c來實現。一些功能的呼叫其實並沒php什麼事,它只是個純粹的膠水,有什麼功能全用c在實現,然後執行完成再**給php。
所以,你相當於在用php語法來寫底層的c服務,你並不需要了解底層的實現邏輯,你會用php就足夠了,因缺思婷~
在說下swoole提供了哪些功能給我們用,以為我們用到哪些服務時,可以用swoole來幫我們實現。
如果你的業務中,有用到以上等特性,你又在用使用php,那麼完全可以用swoole來完成了。
swoole的安裝相對來說很簡單,你完全可以把他當做乙個普通的php的擴充套件來安裝。
簡單記錄下:
pecl安裝:
pecl install swoole
原始碼安裝:
git clone
cd swoole-src
phpize
./configure
make && make install
mac下brew安裝:
brew install php56-swoole
brew install php70-swoole
我在學習時候,按照的是目前的最新文件版本:1.8.11-stable
如果,**提示沒生效,可以選中 src裡的所有檔案,右建,mark as plain text,就可以了。
ok,乙個簡單的介紹和安裝就到這裡了,下面會著重介紹如何使用swoole。
update 2016.11.29
作者更新了新的 ide-helper檔案,更加智慧型好用,可以根據swoole擴充套件自己去生成ide-helper文件:
然後cd ide-helper &&& sudo php dump.php
會生成 output資料夾,這就是ide幫助檔案,按照上面的方式加到ide的擴充套件包裡,寫**就能識別了。而且是最新的**特性。
swoole深入學習 4 process
swoole 1.7.2增加了乙個程序管理模組,用來替代php的pcntl擴充套件。pcntl是php新增的乙個多程序擴充套件,用來實現多程序,但是有很多不完善的地方,swoole 就完善了這些地方,而且使得使用非常簡單。swoole建立多程序很簡單 new swoole process callb...
DNS深入學習 1
主要貢獻者包括 micha k pie jan piet mens,andrew babichev,jacob hoffman andrews,peter van dijk,nathan froyd,gene mcculley,charles henri bruyand,jose nazario,w...
如何玩轉swoole 入門學習一下swoole
最近有需求需要搞一下物聯網通訊這塊的東西,也是小明我的乙個短板,所以就在這裡開個專欄記錄一下學習swoole的筆記吧。一般學習乙個新的技術,小明還是建議以官方的學習文件為主。像我現在這樣的文章呢?可以避免一些採坑,但是具體的一些流程還是得以官方的為主。具體的安裝步驟,小明就不細說了,大家參考官方文件...