學習使用swoole過程中遇到的坑總結

坑1:使用laravelS依賴的時候 出現一個問題就是想通過php創建websocket客戶端 

思路就是先創建http客戶端 之後通過upgrade升級成websocket連接

但是在第一部過程中 出現一個問題

右邊紅色部分顯示 這個class未找到

學習使用swoole過程中遇到的坑總結

解決方法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

  1. 之後修改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  如果成功 可以看到 類似於如下圖所示的配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章