fast-fgi與php-fpm的關(guān)系

轉(zhuǎn)載https://segmentfault.com/q/1010000000256516

  • 首先骇窍,CGI是干嘛的溢豆?CGI是為了保證web server傳遞過(guò)來(lái)的數(shù)據(jù)是標(biāo)準(zhǔn)格式的饼拍,方便CGI程序的編寫(xiě)者承匣。
  • web server(比如說(shuō)nginx)只是內(nèi)容的分發(fā)者贯城。比如,如果請(qǐng)求/index.html斗忌,那么web server會(huì)去文件系統(tǒng)中找到這個(gè)文件,發(fā)送給瀏覽器旺聚,這里分發(fā)的是靜態(tài)數(shù)據(jù)织阳。好了,如果現(xiàn)在請(qǐng)求的是/index.php砰粹,根據(jù)配置文件唧躲,nginx知道這個(gè)不是靜態(tài)文件,需要去找PHP解析器來(lái)處理,那么他會(huì)把這個(gè)請(qǐng)求簡(jiǎn)單處理后交給PHP解析器惊窖。Nginx會(huì)傳哪些數(shù)據(jù)給PHP解析器呢刽宪?url要有吧,查詢字符串也得有吧界酒,POST數(shù)據(jù)也要有圣拄,HTTP header不能少吧,好的毁欣,CGI就是規(guī)定要傳哪些數(shù)據(jù)庇谆、以什么樣的格式傳遞給后方處理這個(gè)請(qǐng)求的協(xié)議。仔細(xì)想想凭疮,你在PHP代碼中使用的用戶從哪里來(lái)的饭耳。
  • 當(dāng)web server收到/index.php這個(gè)請(qǐng)求后,會(huì)啟動(dòng)對(duì)應(yīng)的CGI程序执解,這里就是PHP的解析器寞肖。接下來(lái)PHP解析器會(huì)解析php.ini文件,初始化執(zhí)行環(huán)境衰腌,然后處理請(qǐng)求新蟆,再以規(guī)定CGI規(guī)定的格式返回處理后的結(jié)果,退出進(jìn)程右蕊。web server再把結(jié)果返回給瀏覽器琼稻。
  • 好了,CGI是個(gè)協(xié)議饶囚,跟進(jìn)程什么的沒(méi)關(guān)系帕翻。那fastcgi又是什么呢?Fastcgi是用來(lái)提高CGI程序性能的萝风。

提高性能嘀掸,那么CGI程序的性能問(wèn)題在哪呢?"PHP解析器會(huì)解析php.ini文件规惰,初始化執(zhí)行環(huán)境"横殴,就是這里了。標(biāo)準(zhǔn)的CGI對(duì)每個(gè)請(qǐng)求都會(huì)執(zhí)行這些步驟(不閑累扒渌衫仑!啟動(dòng)進(jìn)程很累的說(shuō)!)堕花,所以處理每個(gè)時(shí)間的時(shí)間會(huì)比較長(zhǎng)文狱。這明顯不合理嘛!那么Fastcgi是怎么做的呢缘挽?首先瞄崇,F(xiàn)astcgi會(huì)先啟一個(gè)master呻粹,解析配置文件,初始化執(zhí)行環(huán)境苏研,然后再啟動(dòng)多個(gè)worker等浊。當(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等著;當(dāng)然空閑worker太多時(shí)大渤,也會(huì)停掉一些制妄,這樣就提高了性能,也節(jié)約了資源泵三。這就是fastcgi的對(duì)進(jìn)程的管理耕捞。

  • 那PHP-FPM又是什么呢?是一個(gè)實(shí)現(xiàn)了Fastcgi的程序烫幕,被PHP官方收了俺抽。

大家都知道,PHP的解釋器是php-cgi纬霞。php-cgi只是個(gè)CGI程序,他自己本身只能解析請(qǐng)求驱显,返回結(jié)果诗芜,不會(huì)進(jìn)程管理(皇上,臣妾真的做不到鞍R摺7帧)所以就出現(xiàn)了一些能夠調(diào)度php-cgi進(jìn)程的程序,比如說(shuō)由lighthttpd分離出來(lái)的spawn-fcgi栓霜。好了PHP-FPM也是這么個(gè)東東翠桦,在長(zhǎng)時(shí)間的發(fā)展后,逐漸得到了大家的認(rèn)可(要知道胳蛮,前幾年大家可是抱怨PHP-FPM穩(wěn)定性太差的)销凑,也越來(lái)越流行。

  • 好了仅炊,最后來(lái)回來(lái)你的問(wèn)題斗幼。 網(wǎng)上有的說(shuō),fastcgi是一個(gè)協(xié)議抚垄,php-fpm實(shí)現(xiàn)了這個(gè)協(xié)議

對(duì)蜕窿。

  • 有的說(shuō)谋逻,php-fpm是fastcgi進(jìn)程的管理器,用來(lái)管理fastcgi進(jìn)程的

對(duì)桐经。php-fpm的管理對(duì)象是php-cgi毁兆。但不能說(shuō)php-fpm是fastcgi進(jìn)程的管理器,因?yàn)榍懊嬲f(shuō)了fastcgi是個(gè)協(xié)議阴挣,似乎沒(méi)有這么個(gè)進(jìn)程存在气堕,就算存在php-fpm也管理不了他(至少目前是)。

  • 有的說(shuō)屯吊,php-fpm是php內(nèi)核的一個(gè)補(bǔ)丁

以前是對(duì)的送巡。因?yàn)樽铋_(kāi)始的時(shí)候php-fpm沒(méi)有包含在PHP內(nèi)核里面,要使用這個(gè)功能盒卸,需要找到與源碼版本相同的php-fpm對(duì)內(nèi)核打補(bǔ)丁骗爆,然后再編譯。后來(lái)PHP內(nèi)核集成了PHP-FPM之后就方便多了蔽介,使用--enalbe-fpm這個(gè)編譯參數(shù)即可摘投。

  • 有的說(shuō),修改了php.ini配置文件后虹蓄,沒(méi)辦法平滑重啟犀呼,所以就誕生了php-fpm

是的,修改php.ini之后薇组,php-cgi進(jìn)程的確是沒(méi)辦法平滑重啟的外臂。php-fpm對(duì)此的處理機(jī)制是新的worker用新的配置,已經(jīng)存在的worker處理完手上的活就可以歇著了律胀,通過(guò)這種機(jī)制來(lái)平滑過(guò)度宋光。

  • 還有的說(shuō)PHP-CGI是PHP自帶的FastCGI管理器,那這樣的話干嗎又弄個(gè)php-fpm出來(lái)

不對(duì)炭菌。php-cgi只是解釋PHP腳本的程序而已罪佳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市黑低,隨后出現(xiàn)的幾起案子赘艳,更是在濱河造成了極大的恐慌,老刑警劉巖克握,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕾管,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡菩暗,警方通過(guò)查閱死者的電腦和手機(jī)娇掏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)勋眯,“玉大人婴梧,你說(shuō)我怎么就攤上這事下梢。” “怎么了塞蹭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵孽江,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我番电,道長(zhǎng)岗屏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任漱办,我火速辦了婚禮这刷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娩井。我一直安慰自己暇屋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布洞辣。 她就那樣靜靜地躺著咐刨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扬霜。 梳的紋絲不亂的頭發(fā)上定鸟,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音著瓶,去河邊找鬼联予。 笑死,一個(gè)胖子當(dāng)著我的面吹牛材原,可吹牛的內(nèi)容都是我干的沸久。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼华糖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼麦向!你這毒婦竟也來(lái)了瘟裸?” 一聲冷哼從身側(cè)響起客叉,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎话告,沒(méi)想到半個(gè)月后兼搏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沙郭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年佛呻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片病线。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吓著,死狀恐怖鲤嫡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绑莺,我是刑警寧澤暖眼,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站纺裁,受9級(jí)特大地震影響诫肠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欺缘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一栋豫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谚殊,春花似錦丧鸯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至絮记,卻和暖如春摔踱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怨愤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工派敷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撰洗。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓篮愉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親差导。 傳聞我的和親對(duì)象是個(gè)殘疾皇子试躏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容