很久未更新了,不是懶呃,是太忙啦!終於偷得浮生幾日閒。
這一段時間準備爲你們帶來swoole的入門教程,感覺一下php的nodeJs強悍之處。php
全部的示例代碼均放在了github上:learn-swoolenode
這裏不在使用apache作爲web server。該用nginx + php-fpm,性能更強大,配置更方便。而且爲了跟上php的步伐,也使用了比較新的php版本nginx
[x] centos7git
[x] php7.0.12github
[x] nginx/1.10.2web
[x] php-fpmapache
首先下載swoole的源碼包,這個操做很簡單,沒有太多說的。json
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來生成php編譯配置vim
./configure 來作編譯配置檢測centos
make進行編譯,make install進行安裝
命令執行:
[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後,若是正確,會出現如下內容
[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的模塊配置文件均單獨分開了。
在 php.ini
中可找到以下內容
;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
所以,若是你的php安裝時,若是未特殊設置,能夠在/etc/php.d
目錄中,找到添加模塊的配置文件。
進入到 cd /etc/php.d 目錄,完成相關的配置
[root@php7 swoole-src-2.0.6]# vim swoole.ini ; Enable swoole extension module extension=swoole.so
新增php模塊後,須要從新啓動服務,纔會生效,若是有時候restart後依然無效,請先關閉,再從新啓動。
[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
安裝好擴展後,就是使用的問題。因爲沒有代碼的提示,有時候很不方便,github上有人已經提供了swoole代碼提示的 ide-helper 。具體設置辦法以下:
這裏以: phpStorme 爲例,download 代碼到本地
git clone git@github.com:eaglewu/swoole-ide-helper.git ide-helper
按照圖片內容設置
通過以上步驟,能夠在 phpStorme 中使用swoole了。而且提供代碼提示。
全部的測試代碼均放在 這裏
請將該代碼 clone
到本地,方便觀察效果。
git clone git@github.com:helei112g/learn-swoole.git
本節所提供的代碼實例 demo1-serv
進入到測試代碼目錄,
而後在服務端使用 telnet
進行測試
首先,運行服務端的監聽程序
php demo1-serv.php
執行這個命令後,服務器會顯示:
Client: Connect.
另外開一個終端,使用 telnet
鏈接當前服務端監聽的端口,而且輸入一些文字,觀察終端的變化。
[root@php7 ~]# telnet 127.0.0.1 9999 Hi! Server: Hi!
這裏只是進行簡單的模擬回覆。客戶端發什麼,服務器就回應什麼消息。
退出telnet,觀察服務器會顯示什麼
直接關閉窗口,或者:
[root@php7 ~]# Ctrl+] [root@php7 ~]# telnet> quit
此時,會在服務側看到:
Client: Close.
PS:若是測試環境沒有安裝 telnet
,請自行google安裝。