亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

對PHP-FPM和CGI,還有并發(fā)響應(yīng)的理解

tianyu / 3458人閱讀

摘要:官方對的解釋是進程管理器。對并發(fā)訪問的處理進程和線程從代碼級別來講不支持多線程操作,不能像等語言一樣可以編寫多線程代碼。

關(guān)于本篇文章的部分糾正,請參考這篇文章:http://www.cppblog.com/woaido...

首先搞清楚php-fpm與cgi的關(guān)系 CGI

CGI是一個web server與cgi程序(這里可以理解為是php解釋器)之間進行數(shù)據(jù)傳輸?shù)膮f(xié)議,保證了傳遞的是標準數(shù)據(jù)。

PHP-CGI

php-cgi是php解釋器,就是上文提到的cgi程序。

Fastcgi

Fastcgi是用來提高cgi程序(php-cgi)性能的方案/協(xié)議。

cgi程序的性能問題在哪呢?"PHP解析器會解析php.ini文件,初始化執(zhí)行環(huán)境",就是這里了。標準的CGI對每個請求都會執(zhí)行這些步驟,所以處理的時間會比較長。

Fastcgi會先啟一個master進程,解析配置文件,初始化執(zhí)行環(huán)境,然后再啟動多個worker進程。當(dāng)請求過來時,master會傳遞給一個worker,然后立即可以接受下一個請求。這樣就避免了重復(fù)勞動,效率自然提高。而且當(dāng)worker不夠用時,master可以根據(jù)配置預(yù)先啟動幾個worker等著;當(dāng)然空閑worker太多時,也會停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是Fastcgi的對進程的管理。

PHP-FPM

  上文提到了Fastcgi只是一個方案或者協(xié)議,那么php-fpm就是這個實現(xiàn)了Fastcgi的程序,也就是說,上文所描述的進程分配和管理是FPM來做的。官方對FPM的解釋是 Fastcgi Process Manager(Fastcgi 進程管理器)。

PHP對并發(fā)訪問的處理 進程和線程

PHP從代碼級別來講不支持多線程操作,不能像Java、C#等語言一樣可以編寫多線程代碼。但多線程和并發(fā)沒有直接關(guān)系,多線程只是代碼被運行時在同一時間同時執(zhí)行多個線程任務(wù),來提高服務(wù)器CPU的利用率,提高代碼效率。但php是可以多進程執(zhí)行的,上文所述的FPM進程管理機制就是多進程單線程的,有效提高了并發(fā)訪問的響應(yīng)效率。

簡單的web server + php-fpm 模式

當(dāng)客戶端發(fā)送一個請求時,web server會通過一個php-fpm進程(這里和下文所說指的fpm進程都是fpm開啟的worker進程,關(guān)于fpm的工作原理這里不再累述)去執(zhí)行php代碼,php代碼的執(zhí)行是單線程的。

那么,當(dāng)有多個客戶端同時發(fā)送請求時(并發(fā)),web server會通過php-fpm為每個請求開啟一個多帶帶進程去執(zhí)行php代碼。

請求執(zhí)行過后,空閑的php-fpm進程被銷毀,內(nèi)存得以釋放。

但并發(fā)的問題在于,在某一時間,客戶端請求讓php-fpm進程數(shù)量達到了最大限制數(shù),這個時候,新來的請求只能等待空閑的php-fpm進程來處理,這就是多進程同步阻塞模式的弊端,當(dāng)然還有進程過多所帶來的內(nèi)存占用問題等。


參考鏈接:

https://www.zhihu.com/questio... php fpm 進程數(shù)和并發(fā)數(shù)是什么關(guān)系?

https://segmentfault.com/q/10... php不支持多線程所以不用考慮并發(fā)問題?

http://bbs.csdn.net/topics/39... PHP是單線程的,如何應(yīng)對大量的http訪問? #9層回答

https://www.cnblogs.com/scott... PHP 線程,進程和并發(fā)

https://segmentfault.com/q/10... 搞不清FastCgi與PHP-fpm之間是個什么樣的關(guān)系

http://php.net/manual/zh/inst... FastCGI 進程管理器(FPM)

https://www.cnblogs.com/Perki... 多線程(一)高并發(fā)和多線程的關(guān)系

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26101.html

相關(guān)文章

  • LNMP運維追蹤技巧總結(jié)

    摘要:的運維追蹤技巧總結(jié)曾幾何時我開始運維公司的網(wǎng)站,經(jīng)過一段時間的摸爬滾打,也算是總結(jié)了不少在服務(wù)器下調(diào)試追蹤各種網(wǎng)站錯誤的方法。 LNMP的運維追蹤技巧總結(jié) 曾幾何時我開始運維公司的LNMP網(wǎng)站,經(jīng)過一段時間的摸爬滾打,也算是總結(jié)了不少在LNMP服務(wù)器下調(diào)試追蹤各種網(wǎng)站錯誤的方法。好記性不如爛筆頭,還是總結(jié)一下吧! 在開始我會梳理一下我所理解的一個web請求從發(fā)起到響應(yīng)的各個階段服務(wù)器和...

    XboxYan 評論0 收藏0
  • LNMP運維追蹤技巧總結(jié)

    摘要:的運維追蹤技巧總結(jié)曾幾何時我開始運維公司的網(wǎng)站,經(jīng)過一段時間的摸爬滾打,也算是總結(jié)了不少在服務(wù)器下調(diào)試追蹤各種網(wǎng)站錯誤的方法。 LNMP的運維追蹤技巧總結(jié) 曾幾何時我開始運維公司的LNMP網(wǎng)站,經(jīng)過一段時間的摸爬滾打,也算是總結(jié)了不少在LNMP服務(wù)器下調(diào)試追蹤各種網(wǎng)站錯誤的方法。好記性不如爛筆頭,還是總結(jié)一下吧! 在開始我會梳理一下我所理解的一個web請求從發(fā)起到響應(yīng)的各個階段服務(wù)器和...

    Cristalven 評論0 收藏0
  • 深入剖析 Web 服務(wù)器與 PHP 應(yīng)用之間通信機制 - 掌握 CGI FastCGI 協(xié)議

    摘要:深入?yún)f(xié)議從功能上來講,協(xié)議已經(jīng)完全能夠解決服務(wù)器與應(yīng)用之間的數(shù)據(jù)通信問題。消息頭信息主要的消息頭信息如下用于表示協(xié)議版本號。從服務(wù)器發(fā)送到應(yīng)用,表示中止一個處理中的請求。另外我們還需要明確一點就是服務(wù)器與進程間通信是無序的。 本文首發(fā)于 深入剖析 Web 服務(wù)器與 PHP 應(yīng)用之間的通信機制 - 掌握 CGI 和 FastCGI 協(xié)議的運行原理,轉(zhuǎn)載請注明出處! 身為一名使用 PHP ...

    mumumu 評論0 收藏0
  • HTTP、PHP-FPM、與握手協(xié)議

    摘要:一般產(chǎn)生的原因是系統(tǒng)沒有主動關(guān)閉連接如連接資源沒有關(guān)閉關(guān)于網(wǎng)絡(luò)鏈路中追蹤異常用到的運維命令以下顯示的和端口均為假數(shù)據(jù)中查看的狀態(tài)參數(shù)說明已使用的所有協(xié)議套接字總量正在使用正在偵聽的套接字數(shù)量。其值等于已分配已建立已申請到的套接字數(shù)量。 HTTP請求的流程梳理 用戶輸入url如http:www.baidu.com到瀏覽器,瀏覽器如chrom需要將其解析為ip地址才知道需要到哪里去訪問...

    gself 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<