我們用的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的優缺點
優點:
- 部署簡單
- 除錯方便
- 基於傳統php的專案非常多,易於參考
缺點:
- 每次http請求都要載入全部的專案檔案
- php-fpm效能不佳,併發效能不好
- 核心非同步網路不支援
這個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文件
- 先通略看一看swoole的官方文件
- 看一下並實現慕課網singwa老師的兩個swoole教程
- esayswoole的官方入門視訊easyswoole入門視訊
- 看一下開源swoole專案,研究別人怎麼用swoole實現業務邏輯 https://www.fashop.cn/ | 部落格:woann-chat 基於 laravelS 和 layim 的聊天系統
- 到這裡,你應該就能算會用swoole的phper了