入坑一個話題,總得有入坑的理由。有好多話題可供選擇,可是思來想去,對於PHPer進階與其急着去掌握一門新的語言,匆忙地踏足一個新的知識體系,還不如先把php圈子的技能點攢齊了。php
話說Swoole誕生以前,php是世界上最好的語言。但很惋惜php語言沒法支持長鏈接,始終是個遺憾。而自從Swoole誕生以後,php晉升爲太陽系最好的語言。Swoole提供給了php長鏈接、協程、異步任務、微服務的能力,彌補了php短板,讓php有了在即時通信、物聯網、區塊鏈的領域中發力的可能。雖然在Swoole的生態圈子裏發生了一些不太友好的事情,可是神仙吵架絲絕不影響Swoole的優秀。接下來,作好準備,讓咱們一塊兒徜徉在知識的海洋。c++
在這一系列的文章中,咱們會假設你們已經有良好的php基礎,對於擴展的編譯已經熟練掌握。若是對於相關的知識點不甚瞭解,能夠隨時聯繫博主。git
另外,博主使用的操做系統是CentOS 7.5,PHP版本號是7.3.15github
這一篇裏,咱們要了解兩個問題:安裝Swoole 和 寫出一個Swoole的Hello world。編程
一、安裝Swoolecentos
安裝Swoole有兩種方式,即編譯成php的擴展,或者在編譯php的過程過靜態編譯到php中。兩種方法均可以讓php順利使用上Swoole。固然,爲了編譯方便與靈活,筆者會採用擴展的方式進行編譯。瀏覽器
由於Swoole自身要求PHP版本號>7.1,gcc版本號>4.8,因此若是須要升級gcc的小夥伴能夠運行:bash
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擴展的源代碼(任選其一):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查看結果。以下圖:
二、寫出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這東西能夠爲咱們帶來什麼難以想象的功能。今天就先到這裏吧:)
--------------------------- 我是可愛的分割線 ----------------------------
最後博主借地宣傳一下,漳州編程小組招新了,這是一個面向漳州青少年信息學/軟件設計的學習小組,有意向的同窗點擊連接,聯繫我吧。