Swoole是PHP中的異步、并行、高性能網(wǎng)絡(luò)通信引擎,支持TCP長(zhǎng)連接,Websocket,Mqtt等協(xié)議。廣泛用于手機(jī)app、手游服務(wù)端、網(wǎng)絡(luò)游戲服務(wù)器、聊天室、硬件通訊、智能家居、車聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域的開(kāi)發(fā)。下面小編詳細(xì)介紹安裝過(guò)程。
好久未更新了,不是懶呃,是太忙啦!終于偷得浮生幾日閑。
這一段時(shí)間準(zhǔn)備為大家?guī)?lái)swoole的入門教程,感受一下php的nodeJs強(qiáng)悍之處。
所有的示例代碼均放在了github上:learn-swoole
環(huán)境
這里不在使用apache做為web server。該用nginx + php-fpm,性能更強(qiáng)大,配置更方便。并且為了跟上php的步伐,也使用了比較新的php版本
-
[x] centos7
-
[x] php7.0.12
-
[x] nginx/1.10.2
-
[x] php-fpm
下載 swoole
首先下載swoole的源碼包,這個(gè)操作很簡(jiǎn)單,沒(méi)有太多說(shuō)的。
wget -c https://github.com/swoole/swoole-src/archive/v2.0.6.tar.gz 解壓: tar -zxvf v2.0.6.tar.gz cd swoole-src-2.0.6/
編譯&安裝
使用phpize來(lái)生成php編譯配置
./configure 來(lái)做編譯配置檢測(cè)
make進(jìn)行編譯,make install進(jìn)行安裝
命令執(zhí)行:
[root@php7 swoole-src-2.0.6]# phpize [root@php7 swoole-src-2.0.6]# ./configure [root@php7 swoole-src-2.0.6]# make && make install
make install后,如果正確,會(huì)出現(xiàn)以下內(nèi)容
[root@php7 swoole-src-2.0.6]# make install Installing shared extensions: /usr/lib64/php/modules/
這表示,在 /usr/lib64/php/modules/ 目錄中,成功生成了 swoole.so 文件
修改配置文件
要能夠使用該模塊,還需要在 php.ini 文件中添加該模塊。
這里需要注意,php7的模塊配置文件均單獨(dú)分開(kāi)了。
在 php.ini 中可找到如下內(nèi)容
;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
因此,如果你的php安裝時(shí),如果未特殊設(shè)置,可以在/etc/php.d 目錄中,找到添加模塊的配置文件。
進(jìn)入到 cd /etc/php.d 目錄,完成相關(guān)的配置
[root@php7 swoole-src-2.0.6]# vim swoole.ini ; Enable swoole extension module extension=swoole.so
重啟服務(wù)
新增php模塊后,需要重新啟動(dòng)服務(wù),才會(huì)生效,如果有時(shí)候restart后依然無(wú)效,請(qǐng)先關(guān)閉,再重新啟動(dòng)。
[root@php7 swoole-src-2.0.6]# systemctl restart nginx [root@php7 swoole-src-2.0.6]# systemctl restart php-fpm
通過(guò)php -m或phpinfo()來(lái)查看是否成功加載了swoole
swoole 代碼的自動(dòng)提示
安裝好擴(kuò)展后,就是使用的問(wèn)題。由于沒(méi)有代碼的提示,有時(shí)候很不方便,github上有人已經(jīng)提供了swoole代碼提示的 ide-helper 。具體設(shè)置辦法如下:
這里以: phpStorme 為例,download 代碼到本地
git clone git@github.com:eaglewu/swoole-ide-helper.git ide-helper
按照?qǐng)D片內(nèi)容設(shè)置
經(jīng)過(guò)以上步驟,可以在 phpStorme 中使用swoole了。并且提供代碼提示。
簡(jiǎn)單測(cè)試
所有的測(cè)試代碼均放在 這里
請(qǐng)將該代碼 clone 到本地,方便觀察效果。
git clone git@github.com:helei112g/learn-swoole.git
本節(jié)所提供的代碼實(shí)例 demo1-serv
進(jìn)入到測(cè)試代碼目錄,
然后在服務(wù)端使用 telnet 進(jìn)行測(cè)試
-
首先,運(yùn)行服務(wù)端的監(jiān)聽(tīng)程序
php demo1-serv.php
執(zhí)行這個(gè)命令后,服務(wù)器會(huì)顯示:
Client: Connect.
-
另外開(kāi)一個(gè)終端,使用 telnet 連接當(dāng)前服務(wù)端監(jiān)聽(tīng)的端口,并且輸入一些文字,觀察終端的變化。
[root@php7 ~]# telnet 127.0.0.1 9999Hi!Server: Hi!
這里只是進(jìn)行簡(jiǎn)單的模擬回復(fù)??蛻舳税l(fā)什么,服務(wù)器就回應(yīng)什么消息。
退出telnet,觀察服務(wù)器會(huì)顯示什么
直接關(guān)閉窗口,或者:
[root@php7 ~]# Ctrl+] [root@php7 ~]# telnet> quit
此時(shí),會(huì)在服務(wù)側(cè)看到:
Client: Close.
PS:如果測(cè)試環(huán)境沒(méi)有安裝 telnet ,請(qǐng)自行g(shù)oogle安裝。
推薦學(xué)習(xí):php視頻教程