PHP 與 Swoole 淺析與學習

Double-Jin發表於2019-05-16

我們用的PHP主要用於web開發,通過nginx、apache等服務端程式呼叫php-fpm處理服務端的業務邏輯,處理完後php撤消記憶體並後回結果,由此可見,一個http就要載入一次php的全部檔案,這也是目前php-fpm的缺點之一,並且php-fpm不合適service端的開發。

下面是我隨便在網上找的php-fpm執行流程,各位參考理解一下

http://www.test.cc
        |
      Nginx
        |
路由到http://www.test.cc/index.php
        |
載入nginx的fast-cgi模組
        |
fast-cgi監聽127.0.0.1:9000地址
        |
www.test.com/index.php請求到達127.0.0.1:9000
        |
php-fpm 監聽127.0.0.1:9000
        |
php-fpm 接收到請求,啟用worker程式處理請求
        |
php-fpm 處理完請求並撤消記憶體,返回給nginx
        |
nginx將結果通過http返回給瀏覽器

總結一下我理解php-fpm的優缺點

優點:

  1. 部署簡單
  2. 除錯方便
  3. 基於傳統php的專案非常多,易於參考

缺點:

  1. 每次http請求都要載入全部的專案檔案
  2. php-fpm效能不佳,併發效能不好
  3. 核心非同步網路不支援

這個swoole官方的介紹

SWOOLE是PHP的協程高效能網路通訊引擎,使用C/C++語言編寫,提供了多種通訊協議的網路伺服器和客戶端模組
,使 PHP 開發人員可以編寫高效能的非同步併發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用於網際網路、行動通訊、企業軟體、雲端計算、網路遊戲、物聯網(IOT)、車聯網、智慧家居等領域。 使用 PHP + Swoole 作為網路通訊框架,可以使企業 IT 研發團隊的效率大大提升。^ [1]^

swoole相對於php-fpm優點:

  • 能搭建TCP/UDP/UnixSocket伺服器
  • 原生支援毫秒定時器
  • 非同步/同步TCP/UDP網路客戶端、非同步MySQL、非同步Redis
  • 高效能的協程提高非同步IO的效果和效能
  • 常駐的cli執行模式,不用每次請求載入一次專案程式碼

swoole相對於php-fpm缺點:

  • 不支援xdebug,不支援手動dump
  • 相關文件較少
  • 入門難度高,多數PHPER不瞭解TCP/IP網路協議、多程式/多執行緒、非同步io等

詳細的swoole介紹可以到easyswoole文件中檢視easyswoole文件

  1. 先通略看一看swoole的官方文件
  2. 看一下並實現慕課網singwa老師的兩個swoole教程
  3. esayswoole的官方入門視訊easyswoole入門視訊
  4. 看一下開源swoole專案,研究別人怎麼用swoole實現業務邏輯 https://www.fashop.cn/ | 部落格:woann-chat 基於 laravelS 和 layim 的聊天系統
  5. 到這裡,你應該就能算會用swoole的phper了

未經允許禁止轉載 -- 苦力小林,

相關文章