CGI、PHP-CGI原茅、FastCGI

CGI

一. CGI是什么
CGI吭历,全稱是Common Gateway Interface,翻譯過(guò)來(lái)就是“通用網(wǎng)關(guān)接口”擂橘,定義了一個(gè)接口標(biāo)準(zhǔn)晌区,描述了數(shù)據(jù)怎么在服務(wù)器和外部應(yīng)用程序之間怎么傳遞。

二. CGI的來(lái)歷
在很早之前通贞,互聯(lián)網(wǎng)只有些靜態(tài)內(nèi)容朗若,瀏覽器發(fā)送資源請(qǐng)求,服務(wù)器接受請(qǐng)求并返回服務(wù)器上的靜態(tài)文件即可昌罩。

隨著互聯(lián)網(wǎng)的發(fā)展哭懈,動(dòng)態(tài)內(nèi)容產(chǎn)生了,這些動(dòng)態(tài)內(nèi)容涉及到了數(shù)據(jù)庫(kù)茎用,能夠操作數(shù)據(jù)庫(kù)的動(dòng)態(tài)語(yǔ)言將數(shù)據(jù)處理后返回給WebServer遣总,WebServer再返回給瀏覽器。

由于有很多種動(dòng)態(tài)語(yǔ)言和很多種瀏覽器轨功,它們之間面臨著不兼容的情況旭斥,這時(shí)候就需要在它們之間設(shè)立一個(gè)接口標(biāo)準(zhǔn),這就是CGI古涧。瀏覽器發(fā)起請(qǐng)求垂券,WebServer會(huì)將請(qǐng)求發(fā)給對(duì)應(yīng)的CGI程序,CGI再調(diào)用外部程序來(lái)處理請(qǐng)求并返回結(jié)果羡滑。

Paste_Image.png

三. CGI的作用
WebServer是通過(guò)如下方式來(lái)CGI程序進(jìn)行通信的菇爪,所以只要支持標(biāo)準(zhǔn)輸入輸出和環(huán)境變量的語(yǔ)言卒暂,都能用來(lái)編寫(xiě)CGI程序。

環(huán)境變量(請(qǐng)求類型娄帖,請(qǐng)求IP..)
標(biāo)準(zhǔn)輸入(請(qǐng)求主體)
標(biāo)準(zhǔn)輸出(請(qǐng)求響應(yīng))

CGI描述了如何在環(huán)境變量中傳遞請(qǐng)求的基本信息也祠,如何通過(guò)標(biāo)準(zhǔn)輸入傳遞請(qǐng)求體,以及如何通過(guò)標(biāo)準(zhǔn)輸出來(lái)傳遞輸出近速。這就使編程語(yǔ)言可以很容易得使用環(huán)境變量诈嘿、標(biāo)準(zhǔn)輸入輸出

四. CGI的缺點(diǎn)
WebServer在接收到請(qǐng)求時(shí),會(huì)先f(wàn)ork出CGI進(jìn)程削葱,然后處理請(qǐng)求奖亚,處理完后結(jié)束這個(gè)進(jìn)程,這就是 fork-and-execute 模式析砸。所以用 CGI 方式的服務(wù)器有多少連接請(qǐng)求就會(huì)有多少 CGI 進(jìn)程昔字,每個(gè)進(jìn)程都會(huì)加載解析PHP配置,初始化執(zhí)行環(huán)境首繁,那么當(dāng)高并發(fā)請(qǐng)求時(shí)作郭,會(huì)大量擠占系統(tǒng)的資源如內(nèi)存,CPU 時(shí)間等弦疮,造成效能低下夹攒。


PHP-CGI

PHP-CGI是php的CGI程序,不進(jìn)行進(jìn)程管理


FastCGI

一. FastCGI的簡(jiǎn)介
FastCGI是Web服務(wù)器和處理程序之間通信的一種協(xié)議胁塞, 是CGI的一種改進(jìn)方案咏尝,FastCGI像是一個(gè)常駐(long-lived)型的CGI, 它可以一直執(zhí)行啸罢,在請(qǐng)求到達(dá)時(shí)不會(huì)花費(fèi)時(shí)間去fork一個(gè)進(jìn)程來(lái)處理(這是CGI最為人詬病的fork-and-execute模式)编检。 正是因?yàn)樗皇且粋€(gè)通信協(xié)議,它還支持分布式的運(yùn)算扰才,所以 FastCGI 程序可以在網(wǎng)站服務(wù)器以外的主機(jī)上執(zhí)行允懂,并且可以接受來(lái)自其它網(wǎng)站服務(wù)器的請(qǐng)求。

FastCGI 是與語(yǔ)言無(wú)關(guān)的训桶、可伸縮架構(gòu)的 CGI 開(kāi)放擴(kuò)展累驮,將 CGI 解釋器進(jìn)程保持在內(nèi)存中酣倾,以此獲得較高的性能舵揭。 CGI 程序反復(fù)加載是 CGI 性能低下的主要原因,如果 CGI 程序保持在內(nèi)存中并接受 FastCGI 進(jìn)程管理器調(diào)度躁锡, 則可以提供良好的性能午绳、伸縮性、Fail-Over 特性等映之。

二. FastCGI工作流程

  1. FastCGI 進(jìn)程管理器自身初始化拦焚,啟動(dòng)多個(gè) CGI 解釋器進(jìn)程蜡坊,并等待來(lái)自 Web Server 的連接。
  2. Web 服務(wù)器與 FastCGI 進(jìn)程管理器進(jìn)行 Socket 通信赎败,通過(guò) FastCGI 協(xié)議發(fā)送 CGI 環(huán)境變量和標(biāo)準(zhǔn)輸入數(shù)據(jù)給 CGI 解釋器進(jìn)程秕衙。
  3. CGI 解釋器進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回 Web Server。
  4. CGI 解釋器進(jìn)程接著等待并處理來(lái)自 Web Server 的下一個(gè)連接僵刮。

FastCGI 與傳統(tǒng) CGI 模式的區(qū)別之一則是 Web 服務(wù)器不是直接執(zhí)行 CGI 程序了据忘,而是通過(guò) Socket 與 FastCGI 響應(yīng)器(FastCGI 進(jìn)程管理器)進(jìn)行交互,也正是由于 FastCGI 進(jìn)程管理器是基于 Socket 通信的搞糕,所以也是分布式的勇吊,Web 服務(wù)器可以和 CGI 響應(yīng)器服務(wù)器分開(kāi)部署。Web 服務(wù)器需要將數(shù)據(jù) CGI/1.1 的規(guī)范封裝在遵循 FastCGI 協(xié)議包中發(fā)送給 FastCGI 響應(yīng)器程序窍仰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末汉规,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驹吮,更是在濱河造成了極大的恐慌针史,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碟狞,死亡現(xiàn)場(chǎng)離奇詭異悟民,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)篷就,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)射亏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人竭业,你說(shuō)我怎么就攤上這事智润。” “怎么了未辆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵窟绷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我咐柜,道長(zhǎng)兼蜈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任拙友,我火速辦了婚禮为狸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遗契。我一直安慰自己辐棒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著漾根,像睡著了一般泰涂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辐怕,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天逼蒙,我揣著相機(jī)與錄音,去河邊找鬼寄疏。 笑死其做,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赁还。 我是一名探鬼主播妖泄,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼艘策!你這毒婦竟也來(lái)了蹈胡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朋蔫,失蹤者是張志新(化名)和其女友劉穎罚渐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體驯妄,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荷并,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了青扔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片源织。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖微猖,靈堂內(nèi)的尸體忽然破棺而出谈息,到底是詐尸還是另有隱情,我是刑警寧澤凛剥,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布侠仇,位于F島的核電站,受9級(jí)特大地震影響犁珠,放射性物質(zhì)發(fā)生泄漏逻炊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一犁享、第九天 我趴在偏房一處隱蔽的房頂上張望余素。 院中可真熱鬧,春花似錦饼疙、人聲如沸溺森。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)屏积。三九已至,卻和暖如春磅甩,著一層夾襖步出監(jiān)牢的瞬間炊林,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工卷要, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渣聚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓僧叉,卻偏偏與公主長(zhǎng)得像奕枝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瓶堕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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