成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

tianyu / 3399人閱讀

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

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

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

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

PHP-CGI

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

Fastcgi

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

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

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

PHP-FPM

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

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

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

簡(jiǎn)單的web server + php-fpm 模式

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

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

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

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


參考鏈接:

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

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

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

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26101.html

相關(guān)文章

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

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

    XboxYan 評(píng)論0 收藏0
  • LNMP運(yùn)維追蹤技巧總結(jié)

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

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

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

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

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

    gself 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<