Swoole從入門到入土(1)——入坑
入坑一個話題,總得有入坑的理由。有好多話題可供選擇,但是思來想去,對於PHPer進階與其急著去掌握一門新的語言,匆忙地踏足一個新的知識體系,還不如先把php圈子的技能點攢齊了。
話說Swoole誕生之前,php是世界上最好的語言。但很可惜php語言無法支援長連線,始終是個遺憾。而自從Swoole誕生之後,php晉升為太陽系最好的語言。Swoole提供給了php長連線、協程、非同步任務、微服務的能力,彌補了php短板,讓php有了在即時通訊、物聯網、區塊鏈的領域中發力的可能。雖然在Swoole的生態圈子裡發生了一些不太友好的事情,但是神仙吵架絲毫不影響Swoole的優秀。接下來,做好準備,讓我們一起徜徉在知識的海洋。
在這一系列的文章中,我們會假設大家已經有良好的php基礎,對於擴充套件的編譯已經熟練掌握。如果對於相關的知識點不甚瞭解,可以隨時聯絡博主。
另外,博主使用的作業系統是CentOS 7.5,PHP版本號是7.3.15
這一篇裡,我們要了解兩個問題:安裝Swoole 和寫出一個Swoole的Hello world。
1、安裝Swoole
安裝Swoole有兩種方式,即編譯成php的擴充套件,或者在編譯php的過程過靜態編譯到php中。兩種方法都可以讓php順利使用上Swoole。當然,為了編譯方便與靈活,筆者會採用擴充套件的方式進行編譯。
因為Swoole自身要求PHP版本號>7.1,gcc版本號>4.8,所以如果需要升級gcc的小夥伴可以執行:
yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash
接著,需要到以下三個地方,下載Swoole擴充套件的原始碼(任選其一):
https://github.com/swoole/swoole-src/releases
http://pecl.php.net/package/swoole
https://gitee.com/swoole/swoole
開始編譯,編譯過程就是編譯的老套路。請看以下栗子:
#簡單編譯 #進入swoole原始碼目錄 phpize ./configure --with-php-config=/path/to/php-config make make install #高階編譯 #進入swoole原始碼目錄 phpize ./configure --with-php-config=/path/to/php-config --enable-openssl --enable-http2 make make install
編譯完成之後,進入php.ini中新增extension=swoole.so即可。
為了確認php是否成功載入了swoole擴充套件,可以執行php -m | grep swoole檢視結果。如下圖:
2、寫出Swoole的Hello World
在寫出Swoole的Hello World之前,需要先解決一個問題:在phpstorm中新增swoole的自動提示。
1) 下載https://github.com/wudi/swoole-ide-helper,解壓得到目錄swoole-ide-helper
2)PhpStorm的選單項中找到File->Settings->Languages & Frameworks->PHP->inclue path,將swoole-ide-helper目錄加入即可。
接下來,我們建立一個檔案命令為swoole.php,並從利用Swoole寫一段很簡單的的http服務程式碼:
<?php $http = new Swoole\Http\Server("0.0.0.0", 9501); $http->on("start", function ($server) { echo "Swoole http server is started\n"; }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World\n"); }); $http->start();
現在我們還不需要詳細知識這段程式碼每一句什麼作用,只需要先了解這段程式碼實現了一個偵聽在9501上的很簡單的http服務。
我們執行一下這段程式碼php swoole.php,之後我們通過瀏覽器可以看到以下介面:
好了,這一節到這裡就大功告成了。之後我們會逐一討論Swoole這東西可以為我們帶來什麼不可思議的功能。今天就先到這裡吧:)
--------------------------- 我是可愛的分割線 ----------------------------
最後博主借地宣傳一下,漳州程式設計小組招新了,這是一個面向漳州青少年資訊學/軟體設計的學習小組,有意向的同學點選連結,聯絡我吧。