php – swoole 安裝

Swoole

PHP的異步、並行、高性能網絡通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,異步Redis,數據庫連接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。 Swoole內置了Http/WebSocket服務器端/客戶端、Http2.0服務器端。

我在 Ubuntu 16 Command-Line 直接鍵入 phpize 出現

The program 'phpize' is currently not installed. You can install it by typing:
apt install php7.0-dev

那就代表沒有安裝,我們先安裝它。用 aptitude 搜尋

aptitude search php7.2-dev
  • 其中 php7.2-dev 可以更換成你的任何 7.x 版本
aptitude install php7.2-dev

查看安裝好的 phpize 位置

which phpize
會看到如 /usr/bin/phpize

 

安裝 swoole

方法一

建議可以使用 PHP 官方的 pecl 工具下載,先升級主機預設的 pecl

pecl channel-update pecl.php.net

因為須要 php-devel 擴展,所以安裝或升級成屬於你的版本號。這是 centOS 範例

yum install php72w-devel

透過 pecl 安裝

pecl install swoole

以上若有發生錯誤,可以參考網友發生 phpize 錯誤的文章

方法二

可用 aptitude 安裝/確定以下工具,參考參考

  • cmake
  • gcc
  • autoconf
  • pcre
  • make

使用 git

git clone https://github.com/swoole/swoole-src.git

複製後,依序指令

cd swoole-src
phpize
./configure
make 
make install

安裝好後,修改 php.ini 。注意 php.ini 有兩個

  • /etc/php/7.2/cli/php.ini <—- 務必修改它,因為 swoole 要從 command line 呼叫
  • /etc/php/7.2/apache2/php.ini <—- 也可修改它,若要從瀏覽器執行 swoole 就需要修改

參考官方說明

** 如果在 cli 底下運行出現 PHP Fatal error: Class ‘swoole_http_server’ not found 那就是改錯 php.ini 了。記得要改 /etc/php/7.2/cli/php.ini。

接著在 extension 的部分新加入 swoole.so,swoole.so 可以明確指定路徑,會在安裝好後的 modules 內

extension=swoole.so 
//或 
extension=/home/ubuntu/swoole-src/modules/swoole.so

存檔後重啟 apache

service apache2 restart

檢查 swoole 是否出現在模組列表

php -m

並使用 phpinfo() 可以查看到 swoole 。

架設完畢後,我們可以寫簡單測試來看看是否正常運作

  1. php – swoole – 架設 websocket 簡單範例
  2. php – swoole – 架設 websocket 進階範例
  3. PHP – Swoole – HTTPS/SSL 啟用設定方式

Comments

  1. 你好, 我安裝完swoole, 輸入 php -m 也有出現
    在輸入指令 php swoole.php之前之後,client頁面都出這個錯誤,不太確定原因,想請問可能的原因?
    client.html:9 WebSocket connection to ‘ws://chat.websocket.dennings.org:8080/’ failed: Connection closed before receiving a handshake response
    (anonymous) @ client.html:9

  2. 因為你的網址打錯了,要打上你的路徑喔

  3. 你好 git clone 因該是 https://github.com/swoole/swoole-src.git
    不知道你是如何clone

發表迴響