好久未更新了,不是懶呃,是太忙啦!終于偷得浮生幾日閑。 這一段時(shí)間準(zhǔn)備為大家?guī)韘woole的入門教程,感受一下php的nodeJs強(qiáng)悍之處。
所有的示例代碼均放在了github上:learn-swoole
這里不在使用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的源碼包,這個(gè)操作很簡(jiǎn)單,沒有太多說的。
wget -c https://github.com/swoole/swoole-src/archive/v2.0.6.tar.gz解壓: tar -zxvf v2.0.6.tar.gzcd swoole-src-2.0.6/使用phpize來生成php編譯配置
./configure 來做編譯配置檢測(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 installmake install后,如果正確,會(huì)出現(xiàn)以下內(nèi)容
[root@php7 swoole-src-2.0.6]# make installInstalling shared extensions: /usr/lib64/php/modules/這表示,在 /usr/lib64/php/modules/ 目錄中,成功生成了 swoole.so 文件
要能夠使用該模塊,還需要在 php.ini 文件中添加該模塊。
這里需要注意,php7的模塊配置文件均單獨(dú)分開了。 在 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 moduleextension=swoole.so新增php模塊后,需要重新啟動(dòng)服務(wù),才會(huì)生效,如果有時(shí)候restart后依然無效,請(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通過php -m或phpinfo()來查看是否成功加載了swoole
安裝好擴(kuò)展后,就是使用的問題。由于沒有代碼的提示,有時(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)過以上步驟,可以在 phpStorme 中使用swoole了。并且提供代碼提示。
所有的測(cè)試代碼均放在 這里
請(qǐng)將該代碼 clone 到本地,方便觀察效果。
本節(jié)所提供的代碼實(shí)例 demo1-serv
進(jìn)入到測(cè)試代碼目錄,
然后在服務(wù)端使用 telnet 進(jìn)行測(cè)試
執(zhí)行這個(gè)命令后,服務(wù)器會(huì)顯示:
Client: Connect.
telnet 連接當(dāng)前服務(wù)端監(jiān)聽的端口,并且輸入一些文字,觀察終端的變化。[root@php7 ~]# telnet 127.0.0.1 9999Hi!Server: Hi!這里只是進(jìn)行簡(jiǎn)單的模擬回復(fù)。客戶端發(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)境沒有安裝 telnet ,請(qǐng)自行g(shù)oogle安裝。
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注