91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Swoole和PHP-FPM有什么不同?

發布時間:2020-05-21 22:39:37 來源:億速云 閱讀:646 作者:鴿子 欄目:編程語言

PHP-FPM

早期版本的 PHP 并沒有內置的 WEB 服務器,而是提供了 SAPI(Server API)給第三方做對接。現在非常流行的 php-fpm 就是通過 FastCGI 協議來處理 PHP 與第三方 WEB 服務器之間的通信。比如 Nginx + php-fpm 的組合,這種方式運行的 fpm 是 Master/Worker 模式,啟動一個 Master 進程監聽來自 Nginx 的請求,再 fork 多個 Worker 進程處理請求。每個 Worker 進程只能處理一個請求,單一進程的生命周期大體如下:

1.初始化模塊。

2.初始化請求。此處請求是請求 PHP 執行代碼的意思,并非 HTTP 的請求。

3.執行 PHP 腳本。

4.結束請求。

5.關閉模塊。

多進程模型是依賴進程數來解決并發問題,一個進程只能處理一個連接,當啟動大量進程,進程調度消耗可能占 CPU 的百分之幾十甚至 100%,比如 C10K 問題,多進程模型就力不從心了。

Swoole

Swoole 采用的也是 Master/Worker 模式,不同的是 Master 進程有多個 Reactor 線程,Master 只是一個事件發生器,負責監聽 Socket 句柄的事件變化。Worker 以多進程的方式運行,接收來自 Reactor 線程的請求,并執行回調函數(PHP 編寫的)。啟動 Master 進程的流程大致是:

1.初始化模塊。

2.初始化請求。因為 swoole 需要通過 cli 的方式運行,所以初始化請求時,不會初始化 PHP 的全局變量,如 $_SERVER, $_POST, $_GET 等。

3.執行 PHP 腳本。包括詞法、語法分析,變量、函數、類的初始化等,Master 進入監聽狀態,并不會結束進程。

Swoole 加速的原理

● 由 Reactor(epoll 的 IO 復用方式)負責監聽 Socket 句柄的事件變化,解決高并發問題。

● 通過內存常駐的方式節省 PHP 代碼初始化的時間,在使用笨重的框架時,用 swoole 加速效果是非常明顯的。

對比不同

PHP-FPM

● Master 主進程 / Worker 多進程模式。

● 啟動 Master,通過 FastCGI 協議監聽來自 Nginx 傳輸的請求。

● 每個 Worker 進程只對應一個連接,用于執行完整的 PHP 代碼。

● PHP 代碼執行完畢,占用的內存會全部銷毀,下一次請求需要重新再進行初始化等各種繁瑣的操作。

● 只用于 HTTP Server。

Swoole

● Master 主進程(由多個 Reactor 線程組成)/ Worker 多進程(或多線程)模式

● 啟動 Master,初始化 PHP 代碼,由 Reactor 監聽 Socket 句柄的事件變化。

● Reactor 主線程負責子多線程的均衡問題,Manager 進程管理 Worker 多進程,包括 TaskWorker 的進程。

● 每個 Worker 接受來自 Reactor 的請求,只需要執行回調函數部分的 PHP 代碼。

● 只在 Master 啟動時執行一遍 PHP 初始化代碼,Master 進入監聽狀態,并不會結束進程。

● 不僅可以用于 HTTP Server,還可以建立 TCP 連接、WebSocket 連接。

以上就是PHP-FPM與Swoole的比較的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拜城县| 广东省| 通城县| 葫芦岛市| 大宁县| 顺平县| 和硕县| 织金县| 三明市| 依安县| 小金县| 绍兴县| 元谋县| 青岛市| 六枝特区| 赣州市| 怀安县| 奇台县| 即墨市| 阳山县| 兰坪| 新巴尔虎右旗| 巴彦淖尔市| 渑池县| 潮州市| 芒康县| 沐川县| 长武县| 丹凤县| 泽库县| 翁源县| 鄱阳县| 牙克石市| 东乌珠穆沁旗| 淳安县| 尚义县| 和政县| 惠水县| 霍山县| 天镇县| 麻城市|