摘要:當(dāng)請(qǐng)求過(guò)來(lái)時(shí),會(huì)傳遞給一個(gè),然后立即可以接受下一個(gè)請(qǐng)求。這樣就避免了重復(fù)的勞動(dòng),效率自然是高。而且當(dāng)不夠用時(shí),可以根據(jù)配置預(yù)先啟動(dòng)幾個(gè)等著,比如,當(dāng)然空閑太多時(shí),也會(huì)停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是的對(duì)進(jìn)程的管理。
對(duì)于cgi fastcgi php-fpm php-cgi的解釋?zhuān)W(wǎng)上挺多的,可以百度查看,下面是我自己的理解
名詞術(shù)語(yǔ):
1、web服務(wù)器 2、通信協(xié)議 3、進(jìn)程、主進(jìn)程、子進(jìn)程 4、php解析器 CGI:Common Gateway Interface 公共網(wǎng)關(guān)接口,web服務(wù)器和腳本語(yǔ)言通信的一個(gè)標(biāo)準(zhǔn)、 接口、協(xié)議【協(xié)議】 FastCGI:CGI協(xié)議的升級(jí)版【協(xié)議】 PHP-CGI: 實(shí)現(xiàn)了CGI接口協(xié)議的PHP腳本解析器【程序】 PHP-FPM: 管理和調(diào)度php-cgi進(jìn)程,進(jìn)而實(shí)現(xiàn)了FastCGI接口協(xié)議的程序【程序】
webserver只能處理靜態(tài)文件,對(duì)于php這樣的動(dòng)態(tài)腳本無(wú)能為力,只能交給php自己來(lái)處理, 于是有了下面這個(gè)流程:
但是上面架構(gòu)有個(gè)性能問(wèn)題,CGI對(duì)每個(gè)請(qǐng)求會(huì)parse一遍對(duì)應(yīng)腳本的配置文件(如php.ini), 加載配置和擴(kuò)展,初始化執(zhí)行環(huán)境,性能非常差,所有有了下面的流程:
那么實(shí)現(xiàn)Fastcgi協(xié)議的程序,如PHP-FPM是怎么做的呢?首先,F(xiàn)astcgi會(huì)先啟一個(gè)master進(jìn)程,解析配置文件,初始化執(zhí)行環(huán)境,然后再啟動(dòng)多個(gè)worker進(jìn)程,這個(gè)worker就是php-cgi。當(dāng)請(qǐng)求過(guò)來(lái)時(shí),master會(huì)傳遞給一個(gè)worker,然后立即可以接受下一個(gè)請(qǐng)求。這樣就避免了重復(fù)的勞動(dòng),效率自然是高。而且當(dāng)worker不夠用時(shí),master可以根據(jù)配置預(yù)先啟動(dòng)幾個(gè)worker等著,比如20worker,當(dāng)然空閑worker太多時(shí),也會(huì)停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是fastcgi的對(duì)進(jìn)程的管理。
下面是php-fpm配置文件里面的對(duì)worker數(shù)量的配置項(xiàng):
; The maximum number of processes FPM will fork. This has been design to control ; the global number of processes when using dynamic PM within a lot of pools. ; Use it with caution. ; Note: A value of 0 indicates no limit ; Default Value: 0 ; process.max = 128
那么最大的worker進(jìn)程數(shù)就是128
更多的對(duì)FastCGI的解釋
fastcgi是基于cgi架構(gòu)的擴(kuò)展,他的核心思想就是在web server和具體cgi程序之間建立一個(gè)智能的可持續(xù)的中間層,統(tǒng)管cgi程序的運(yùn)行,這樣web server只需要將請(qǐng)求提交給這個(gè)層,這個(gè)層再派生出幾個(gè)可復(fù)用的cgi程序?qū)嵗?,然后再把?qǐng)求分發(fā)給這些實(shí)例,這些實(shí)例是可控的,可持續(xù),可復(fù)用的,因此一方面避免了進(jìn)程反復(fù)fork,另一方面又可以通過(guò)中間層的控制和探測(cè)機(jī)制來(lái)監(jiān)視這些實(shí)例的運(yùn)行情況,根據(jù)不同的狀況fork或者回收實(shí)例,達(dá)到靈活性和穩(wěn)定性兼得的目的。
參考文檔
https://segmentfault.com/q/1010000000256516
http://blog.csdn.net/zhuanshenweiliu/article/details/46413241
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39264.html
摘要:當(dāng)請(qǐng)求過(guò)來(lái)時(shí),會(huì)傳遞給一個(gè),然后立即可以接受下一個(gè)請(qǐng)求。這樣就避免了重復(fù)的勞動(dòng),效率自然是高。而且當(dāng)不夠用時(shí),可以根據(jù)配置預(yù)先啟動(dòng)幾個(gè)等著,比如,當(dāng)然空閑太多時(shí),也會(huì)停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是的對(duì)進(jìn)程的管理。 對(duì)于cgi fastcgi php-fpm php-cgi的解釋?zhuān)W(wǎng)上挺多的,可以百度查看,下面是我自己的理解 名詞術(shù)語(yǔ): 1、web服務(wù)器 2、通信協(xié)議 ...
摘要:工作原理首先先了解下常聽(tīng)說(shuō)的,,,到底是什么關(guān)系,幫助了解的工作原理協(xié)議協(xié)議用來(lái)確定例如,也就是內(nèi)容分發(fā)服務(wù)器傳遞過(guò)來(lái)什么數(shù)據(jù),什么樣格式的數(shù)據(jù)進(jìn)程解釋器是的協(xié)議進(jìn)程解釋器,每次啟動(dòng)時(shí),需要經(jīng)歷加載文件初始化執(zhí)行環(huán)境處理請(qǐng)求返 php工作原理 首先先了解下常聽(tīng)說(shuō)的cgi,php-cgi,fastcgi,php-fpm到底是什么關(guān)系,幫助了解php的工作原理 cgi協(xié)議 cgi協(xié)議用來(lái)確...
摘要:工作原理首先先了解下常聽(tīng)說(shuō)的,,,到底是什么關(guān)系,幫助了解的工作原理協(xié)議協(xié)議用來(lái)確定例如,也就是內(nèi)容分發(fā)服務(wù)器傳遞過(guò)來(lái)什么數(shù)據(jù),什么樣格式的數(shù)據(jù)進(jìn)程解釋器是的協(xié)議進(jìn)程解釋器,每次啟動(dòng)時(shí),需要經(jīng)歷加載文件初始化執(zhí)行環(huán)境處理請(qǐng)求返 php工作原理 首先先了解下常聽(tīng)說(shuō)的cgi,php-cgi,fastcgi,php-fpm到底是什么關(guān)系,幫助了解php的工作原理 cgi協(xié)議 cgi協(xié)議用來(lái)確...
閱讀 2894·2021-11-24 09:39
閱讀 3151·2021-11-19 10:00
閱讀 1552·2021-10-27 14:17
閱讀 1822·2021-10-14 09:43
閱讀 977·2021-09-03 10:30
閱讀 3423·2019-08-30 15:54
閱讀 2748·2019-08-30 13:05
閱讀 2021·2019-08-30 11:02