PHP運(yùn)行模式和生命周期

PHP運(yùn)行模式主要有四種

1? cgi

2 fast-cgi

3 cli 命令行

4 web模塊模式

CGI模式

CGI(Common Gateway Interface),公共網(wǎng)關(guān)接口姿锭,它是Web服務(wù)器與外部應(yīng)用程序(CGI程序)之間傳遞信息的接口標(biāo)準(zhǔn)。

web服務(wù)器會(huì)根據(jù)請(qǐng)求的內(nèi)容食拜,fork一個(gè)子進(jìn)程啟動(dòng)CGI程序,這里就是指PHP的解析器副编,PHP解析器程序啟動(dòng)后负甸,它就會(huì)解析php.ini文件,初始化執(zhí)行環(huán)境痹届,然后解析動(dòng)態(tài)腳本呻待,再把處理完的數(shù)據(jù)返回給web服務(wù)器,最后web服務(wù)器把內(nèi)容發(fā)送給用戶(hù)队腐,剛才fork的進(jìn)程也隨之退出蚕捉。當(dāng)下次再有php任務(wù)請(qǐng)求時(shí),再重復(fù)之前的操作柴淘。

優(yōu)點(diǎn):

把web server和具體的程序處理分開(kāi)迫淹,結(jié)構(gòu)清晰

缺點(diǎn):每次處理請(qǐng)求都會(huì)重啟cgi程序(PHP解析器),cgi程序需要解析php.ini等初始化工作为严,造成效率低下敛熬,服務(wù)器負(fù)擔(dān)加重

FastCGI模式

FastCGI就像是一個(gè)常駐(long-live)型的CGI程序,它可以一直運(yùn)行著第股。其主要行為是將CGI解釋器進(jìn)程保持在內(nèi)存中并因此獲得高效的性能应民。當(dāng)客戶(hù)端請(qǐng)求Web服務(wù)器上的動(dòng)態(tài)腳本時(shí),Web服務(wù)器會(huì)將動(dòng)態(tài)腳本通過(guò)TCP協(xié)議交給FastCGI主進(jìn)程,F(xiàn)astCGI主進(jìn)程根據(jù)情況诲锹,安排一個(gè)空閑的子進(jìn)程來(lái)解析動(dòng)態(tài)腳本繁仁,處理完成后將結(jié)果返回給Web服務(wù)器,Web服務(wù)器再將結(jié)果返回給客戶(hù)端归园。該客戶(hù)端請(qǐng)求處理完畢后黄虱,F(xiàn)astCGI子進(jìn)程并不會(huì)隨之關(guān)閉,而是繼續(xù)等待主進(jìn)程安排工作任務(wù)庸诱。

工作原理:

(1)Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(PHP的FastCGI進(jìn)程管理器是PHP-FPM)

(2)FastCGI進(jìn)程管理器自身初始化悬钳,啟動(dòng)多個(gè)CGI解釋器進(jìn)程 (在任務(wù)管理器中可見(jiàn)多個(gè)php-cgi.exe)并等待來(lái)自Web Server的連接。

(3)當(dāng)客戶(hù)端請(qǐng)求到達(dá)Web Server時(shí)偶翅,F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。Web server將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程php-cgi碉渡。

(4)FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回Web Server聚谁。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便告處理完成滞诺。FastCGI子進(jìn)程接著等待并處理來(lái)自FastCGI進(jìn)程管理器(運(yùn)行在 WebServer中)的下一個(gè)連接形导。在正常的CGI模式中,php-cgi.exe在此便退出了习霹。

優(yōu)點(diǎn):

(1)從穩(wěn)定性上看, fastcgi是以獨(dú)立的進(jìn)程池運(yùn)行來(lái)cgi,單獨(dú)一個(gè)進(jìn)程死掉,系統(tǒng)可以很輕易的丟棄,然后重新分 配新的進(jìn)程來(lái)運(yùn)行邏輯朵耕。

(2)從安全性上看,Fastcgi支持分布式運(yùn)算。FastCGI程序也可以和Web服務(wù)器分別部署在不同的主機(jī)上淋叶,它還可以接受來(lái)自其他Web服務(wù)器的請(qǐng)求阎曹。也就是說(shuō)fastcgi和宿主的server完全獨(dú)立, fastcgi宕掉不會(huì)影響到server。

(3)從性能上看, fastcgi把動(dòng)態(tài)邏輯的處理從server中分離出來(lái), 大負(fù)荷的IO處理留給宿主server, 這樣宿主server可以一心一意處理IO煞檩。

CLI模式

CLI(Command Line Interface)即命令行運(yùn)行模式处嫌,如在終端輸入php a.php運(yùn)行php文件或者直接輸入 php -r “print_r(get_defined_constants());” 執(zhí)行php代碼。

web模塊模式

Web服務(wù)器內(nèi)置模塊斟湃,如apache的mod_ php模塊熏迹,微軟iis的ISAPI,nginx的php-fpm凝赛,將php解釋器做成模塊加載到服務(wù)器中注暗。這樣,隨著服務(wù)器的啟動(dòng)墓猎,PHP解釋器模塊也會(huì)隨之啟動(dòng)捆昏。Apache的模塊可以在運(yùn)行的時(shí)候動(dòng)態(tài)裝載,這意味著對(duì)服務(wù)器可以進(jìn)行功能擴(kuò)展而不需要重新對(duì)源代碼進(jìn)行編譯毙沾,甚至根本不需要停止服務(wù)器屡立。我們所需要做的僅僅是給服務(wù)器發(fā)送信號(hào)HUP或者AP_SIG_GRACEFUL通知服務(wù)器重新載入模塊。但是在動(dòng)態(tài)加載之前,我們需要將模塊編譯成為動(dòng)態(tài)鏈接庫(kù)膨俐。此時(shí)的動(dòng)態(tài)加載就是加載動(dòng)態(tài)鏈接庫(kù)勇皇。 Apache中對(duì)動(dòng)態(tài)鏈接庫(kù)的處理是通過(guò)模塊mod_so來(lái)完成的,因此mod_so模塊不能被動(dòng)態(tài)加載焚刺,它只能被靜態(tài)編譯進(jìn)Apache的核心敛摘,這意味著它是隨著Apache一起啟動(dòng)的。

缺點(diǎn):mod_php 這種嵌入的方式最大的弊端就是內(nèi)存占用大乳愉,不論是否用到PHP解釋器都會(huì)將其加載到內(nèi)存中兄淫。

————————————————

https://blog.csdn.net/IT_10/article/details/95031491?轉(zhuǎn)自

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蔓姚,隨后出現(xiàn)的幾起案子捕虽,更是在濱河造成了極大的恐慌,老刑警劉巖坡脐,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泄私,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡备闲,警方通過(guò)查閱死者的電腦和手機(jī)晌端,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恬砂,“玉大人咧纠,你說(shuō)我怎么就攤上這事⌒褐瑁” “怎么了漆羔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)狱掂。 經(jīng)常有香客問(wèn)我钧椰,道長(zhǎng),這世上最難降的妖魔是什么符欠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任嫡霞,我火速辦了婚禮,結(jié)果婚禮上希柿,老公的妹妹穿的比我還像新娘诊沪。我一直安慰自己,他們只是感情好曾撤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布端姚。 她就那樣靜靜地躺著,像睡著了一般挤悉。 火紅的嫁衣襯著肌膚如雪渐裸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音昏鹃,去河邊找鬼尚氛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洞渤,可吹牛的內(nèi)容都是我干的阅嘶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼载迄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讯柔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起护昧,我...
    開(kāi)封第一講書(shū)人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤魂迄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后惋耙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捣炬,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年怠晴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浴捆。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蒜田,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出选泻,到底是詐尸還是另有隱情冲粤,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布页眯,位于F島的核電站梯捕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窝撵。R本人自食惡果不足惜傀顾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碌奉。 院中可真熱鬧短曾,春花似錦、人聲如沸赐劣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)魁兼。三九已至婉徘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盖呼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工儒鹿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塌计。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓挺身,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親锌仅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子章钾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

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