PHP 與 Swoole 理解與學習
php
我們用的 PHP 主要用於 web 開發,通過 nginx、apache 等服務端程式呼叫 php-fpm 處理服務端的業務邏輯,處理完後 php 撤消記憶體並後回結果,由此可見,一個 http 就要載入一次 php 的全部檔案,這也是目前 php-fpm 的缺點之一,並且 php-fpm 不合適 service 端的開發。
下面是我隨便在網上找的 php-fpm 執行流程,各位參考理解一下
Test.cc is for sale | 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 官方的介紹
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
- 先通略看一看 swoole 的官方文件
- 看一下並實現慕課網 singwa 老師的兩個 swoole 教程
- esayswoole 的官方入門視訊easyswoole 入門視訊
- 看一下開源 swoole 專案,研究別人怎麼用 swoole 實現業務邏輯FaShop - 開源商城系統|部落格:woann-chat 基於 laravelS 和 layim 的聊天系統
- 到這裡,你應該就能算會用 swoole 的 phper 了
更多學習內容可以訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)
以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務程式碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、伺服器效能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell指令碼、Docker、微服務、Nginx等多個知識點高階進階乾貨需要的可以免費分享給大家,需要的可以加入我的PHP技術交流群953224940