坑1:使用laravelS依賴的時候 出現一個問題就是想通過php創建websocket客戶端
思路就是先創建http客戶端 之後通過upgrade升級成websocket連接
但是在第一部過程中 出現一個問題
右邊紅色部分顯示 這個class未找到
解決方法1: 降低swoole擴展的版本 推薦使用https://pecl.php.net/get/swoole-1.10.5.tgz
然後安裝步驟跟初次安裝swoole一樣 如果出現 make && make install 失敗的話 進行 make clean
之後再次執行 make && make install
但是方法1使用低版本會面臨 不再維護的風險
解決方法2:推薦採用 下載swoole的異步庫 ext-async
需要注意的是 假設swoole的版本是4.4.4 (通過 php --ri swoole 可查看)
那麼安裝的ext-async的版本也要4.4.4 搭配使用
安裝步驟如下:
1. wget https://github.com/swoole/ext-async/archive/v4.4.6.zip
2. 解壓 uzip v4.4.6.zip
3. cd ext-async
4. phpize
5. ./configure --with-php-config=PATH (PATH指php-config的具體路徑)
6. make -j 4
7. make install
- 之後修改php.ini 增加一句 extension=swoole_async.so
安裝完之後 就發現 問題也解決了!(有問題可以留言)
坑2:卸載編譯安裝的swoole
我的swoole是通過wget下載之後 進行編譯安裝 但是遇過一個情況 就是想把swoole的版本切換成其他版本的時候 進行覆蓋安裝會出現失敗的可能
那麼我們就採取把當前的swoole卸載掉 之後 重新安裝我們要的版本
步驟如下:
1.找到環境中的php.ini文件
find / -name php.ini
2.編輯文件 找到extension=swoole.so的那一行 註釋掉
3.查找swoole.ini文件 可以通過如下命令獲取具體路徑
php --ini
4.根據顯示的位置 刪掉swoole.ini
5.測試是否刪除成功 沒有出現swoole的信息就表示卸載成功 就可以進行愉快的下載安裝了!
//查看swoole版本
php --ri swoole
坑3:在使用swoole過程中 需要手寫一個關於redis的服務
這個redis的服務 是需要環境中的swoole 開啓 async-redis
此時 通過命令:php --ri swoole 看到並沒有開啓以上的這個配置
那麼有兩種方法 一種是將環境中的swoole卸載 第二種就是將環境中的swoole重新編譯安裝
這裏使用的是第二種方法 卸載的方法 本文的上面已經提過
1.定位到swoole的安裝位置
cd /usr/local/src/swoole-4.4.6
2.執行編譯安裝的命令 也就是在這裏進行開啓上述說的到redis配置
phpize
#/www/server/php/72/bin/php-config 這個是環境中的php-config的位置
./configure --with-php-config=/www/server/php/72/bin/php-config --enable-async-redis
3.之後執行
make -j
make clean
make install
4.之後執行再次執行 php --ri swoole 如果成功 可以看到 類似於如下圖所示的配置