日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
php-fpm和swoole有什么區(qū)別

本教程操作環(huán)境:windows10系統(tǒng)、php7.1版、DELL G3電腦

創(chuàng)新互聯(lián)建站專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、正定網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為正定等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

一.PHP-FPM

早期版本的 PHP 并沒(méi)有內(nèi)置的 web 服務(wù)器,而是提供了 SAPI(Server API)給第三方做對(duì)接。現(xiàn)在非常流行的 php-fpm 就是通過(guò) FastCGI 協(xié)議來(lái)處理 PHP 與第三方 WEB 服務(wù)器之間的通信。

比如 Nginx + php-fpm 的組合,這種方式運(yùn)行的 fpm 是 Master/Worker 模式,啟動(dòng)一個(gè) Master 進(jìn)程監(jiān)聽(tīng)來(lái)自 Nginx 的請(qǐng)求,再 fork 多個(gè) Worker 進(jìn)程處理請(qǐng)求。每個(gè) Worker 進(jìn)程只能處理一個(gè)請(qǐng)求,單一進(jìn)程的生命周期大體如下:

1.初始化模塊。

2.初始化請(qǐng)求。此處請(qǐng)求是請(qǐng)求 PHP 執(zhí)行代碼的意思,并非 HTTP 的請(qǐng)求。

3.執(zhí)行 PHP 腳本。

4.結(jié)束請(qǐng)求。

5.關(guān)閉模塊。

Swoole 采用的也是 Master/Worker 模式,不同的是 Master 進(jìn)程有多個(gè) Reactor 線程,Master 只是一個(gè)事件發(fā)生器,負(fù)責(zé)監(jiān)聽(tīng) Socket 句柄的事件變化。Worker 以多進(jìn)程的方式運(yùn)行,接收來(lái)自 Reactor 線程的請(qǐng)求,并執(zhí)行回調(diào)函數(shù)(PHP 編寫(xiě)的)。啟動(dòng) Master 進(jìn)程的流程大致是:

1.初始化模塊。

2.初始化請(qǐng)求。因?yàn)?swoole 需要通過(guò) cli 的方式運(yùn)行,所以初始化請(qǐng)求時(shí),不會(huì)初始化 PHP 的全局變量,如 $_SERVER, $_POST, $_GET 等。

3.執(zhí)行 PHP 腳本。包括詞法、語(yǔ)法分析,變量、函數(shù)、類(lèi)的初始化等,Master 進(jìn)入監(jiān)聽(tīng)狀態(tài),并不會(huì)結(jié)束進(jìn)程。

Swoole 加速的原理

由 Reactor(epoll 的 IO 復(fù)用方式)負(fù)責(zé)監(jiān)聽(tīng) Socket 句柄的事件變化,解決高并發(fā)問(wèn)題。

通過(guò)內(nèi)存常駐的方式節(jié)省 PHP 代碼初始化的時(shí)間,在使用笨重的框架時(shí),用 swoole 加速效果是非常明顯的。

二.對(duì)比不同

PHP-FPM

Master 主進(jìn)程 / Worker 多進(jìn)程模式。

啟動(dòng) Master,通過(guò) FastCGI 協(xié)議監(jiān)聽(tīng)來(lái)自 Nginx 傳輸?shù)恼?qǐng)求。

每個(gè) Worker 進(jìn)程只對(duì)應(yīng)一個(gè)連接,用于執(zhí)行完整的 PHP 代碼。

PHP 代碼執(zhí)行完畢,占用的內(nèi)存會(huì)全部銷(xiāo)毀,下一次請(qǐng)求需要重新再進(jìn)行初始化等各種繁瑣的操作。

只用于 HTTP Server。

Swoole

Master 主進(jìn)程(由多個(gè) Reactor 線程組成)/ Worker 多進(jìn)程(或多線程)模式

啟動(dòng) Master,初始化 PHP 代碼,由 Reactor 監(jiān)聽(tīng) Socket 句柄的事件變化。

Reactor 主線程負(fù)責(zé)子多線程的均衡問(wèn)題,Manager 進(jìn)程管理 Worker 多進(jìn)程,包括 TaskWorker 的進(jìn)程。

每個(gè) Worker 接受來(lái)自 Reactor 的請(qǐng)求,只需要執(zhí)行回調(diào)函數(shù)部分的 PHP 代碼。

只在 Master 啟動(dòng)時(shí)執(zhí)行一遍 PHP 初始化代碼,Master 進(jìn)入監(jiān)聽(tīng)狀態(tài),并不會(huì)結(jié)束進(jìn)程。

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


網(wǎng)頁(yè)名稱(chēng):php-fpm和swoole有什么區(qū)別
URL標(biāo)題:http://m.5511xx.com/article/ccdppdh.html