1. 程式人生 > 實用技巧 >Swoole從入門到入土(1)——入坑

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這東西可以為我們帶來什麼不可思議的功能。今天就先到這裡吧:)

--------------------------- 我是可愛的分割線 ----------------------------

最後博主借地宣傳一下,漳州程式設計小組招新了,這是一個面向漳州青少年資訊學/軟體設計的學習小組,有意向的同學點選連結,聯絡我吧。