亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP內(nèi)核探索 —— PHP的FastCGI:FastCGI的整個(gè)工作流程

瀏覽:4日期:2022-09-16 13:05:02

CGI全稱是“通用網(wǎng)關(guān)接口”(Common Gateway Interface), 它可以讓一個(gè)客戶端,從網(wǎng)頁(yè)瀏覽器向執(zhí)行在Web服務(wù)器上的程序請(qǐng)求數(shù)據(jù)。 CGI描述了客戶端和這個(gè)程序之間傳輸數(shù)據(jù)的一種標(biāo)準(zhǔn)。 CGI的一個(gè)目的是要獨(dú)立于任何語(yǔ)言的,所以CGI可以用任何一種語(yǔ)言編寫,只要這種語(yǔ)言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。 如php,perl,tcl等。

FastCGI是Web服務(wù)器和處理程序之間通信的一種協(xié)議, 是CGI的一種改進(jìn)方案,F(xiàn)astCGI像是一個(gè)常駐(long-live)型的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ù)器來(lái)的請(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特性等。

一般情況下,F(xiàn)astCGI的整個(gè)工作流程是這樣的:

Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(IIS ISAPI或Apache Module)FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程(可見(jiàn)多個(gè)php-cgi)并等待來(lái)自Web Server的連接。當(dāng)客戶端請(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。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)行在Web Server中)的下一個(gè)連接。 在CGI模式中,php-cgi在此便退出了。

PHP的CGI實(shí)現(xiàn)了Fastcgi協(xié)議,是一個(gè)TCP或UDP協(xié)議的服務(wù)器接受來(lái)自Web服務(wù)器的請(qǐng)求, 當(dāng)啟動(dòng)時(shí)創(chuàng)建TCP/UDP協(xié)議的服務(wù)器的socket監(jiān)聽(tīng),并接收相關(guān)請(qǐng)求進(jìn)行處理。隨后就進(jìn)入了PHP的生命周期: 模塊初始化,sapi初始化,處理PHP請(qǐng)求,模塊關(guān)閉,sapi關(guān)閉等就構(gòu)成了整個(gè)CGI的生命周期。

以TCP為例,在TCP的服務(wù)端,一般會(huì)執(zhí)行這樣幾個(gè)操作步驟:

調(diào)用socket函數(shù)創(chuàng)建一個(gè)TCP用的流式套接字;調(diào)用bind函數(shù)將服務(wù)器的本地地址與前面創(chuàng)建的套接字綁定;調(diào)用listen函數(shù)將新創(chuàng)建的套接字作為監(jiān)聽(tīng),等待客戶端發(fā)起的連接,當(dāng)客戶端有多個(gè)連接連接到這個(gè)套接字時(shí),可能需要排隊(duì)處理;服務(wù)器進(jìn)程調(diào)用accept函數(shù)進(jìn)入阻塞狀態(tài),直到有客戶進(jìn)程調(diào)用connect函數(shù)而建立起一個(gè)連接;當(dāng)與客戶端創(chuàng)建連接后,服務(wù)器調(diào)用read_stream函數(shù)讀取客戶的請(qǐng)求;處理完數(shù)據(jù)后,服務(wù)器調(diào)用write函數(shù)向客戶端發(fā)送應(yīng)答。

PHP內(nèi)核探索 —— PHP的FastCGI:FastCGI的整個(gè)工作流程

PHP的FastCGI使你的所有php應(yīng)用軟件通過(guò)mod_fastci運(yùn)行,而不是mod_phpsusexec。FastCGI應(yīng)用速度很快是因?yàn)樗麄兂志梅€(wěn)定,不必對(duì)每一個(gè)請(qǐng)求都啟動(dòng)和初始化。這使得應(yīng)用程序的開(kāi)發(fā)成為可能,否則在CGI范例是不切實(shí)際的(例如一個(gè)大型的腳本,或者一個(gè)需要 連接單個(gè)或多個(gè)數(shù)據(jù)庫(kù)的應(yīng)用)。

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

PHP腳本運(yùn)行速度更快(3到30倍)。PHP解釋程序被載入內(nèi)存而不用每次需要時(shí)從存儲(chǔ)器讀取,極大的提升了依靠腳本運(yùn)行的站點(diǎn)的性能。需要使用更少的系統(tǒng)資源。由于服務(wù)器不用每次需要時(shí)都載入PHP解釋程序,你可以將站點(diǎn)的傳輸速度提升很高而不必增加cpu負(fù)擔(dān)。不需要對(duì)現(xiàn)有的代碼作任何改變。現(xiàn)有的一切都適用于PHP的FastCGI。

但是也會(huì)有潛在問(wèn)題:

對(duì)所有的子目錄(/home/USERNAME/public_html/php.ini)你只有一個(gè)可用的php.ini文件。這是優(yōu)化網(wǎng)站代碼所必需的。如果你需要多個(gè)php.ini文件以適應(yīng)不同的腳本需要,你可以在任何子目錄禁用PHP的快速CGI,而其余的地方則繼續(xù)有效。如果你需要這樣做請(qǐng)聯(lián)系support。你對(duì)PHP環(huán)境做的任何升級(jí)(如php.ini文件的改變)都有幾分鐘的延遲。這是因?yàn)闉榱烁斓乃俣饶愕膒hp.ini文件已經(jīng)被載入內(nèi)存,而不是每次需要時(shí)再?gòu)拇鎯?chǔ)器重新讀取。
標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧美激情综合第一区 | 99久久精品无码一区二区毛片 | 综合久久综合久久 | 黄色资源在线 | 日韩中文字幕在线不卡 | 性做久久久久久久久男女 | 成年大片免费播放视频人 | 视频一区二区三区蜜桃麻豆 | 麻豆精品视频在线原创 | 成年男女免费视频观看性 | 国产精品成人观看视频国产奇米 | 91精品免费观看老司机 | 国产人妖视频一区在线观看 | 在线国产一区二区 | 国产亚洲小视频 | 午夜在线亚洲男人午在线 | 国产在线拍揄自揄视精品不卡 | 在线亚洲一区二区 | 国产精品情人露脸在线观看 | 九九精品国产兔费观看久久 | 国内精品一区二区三区东京 | 国产91精品在线观看 | 性爽交免费视频 | 中国特级黄一级真人毛片 | 精品一区二区三区四区乱码90 | 草草影院一级毛片a级 | 亚洲在线免费视频 | 国产香蕉91tv永久在线 | 91精品国产91久久久久久最新 | 黄色a三级三级三级免费看 黄色a三级免费看 | 国产专区一区 | 老头做爰xxxx视频 | 欧美性高清在线 | 亚洲三级色 | 在线观看欧美大片 | 黄色免费影视 | 国产chinese视频在线观看 | 国产精品va在线观看手机版 | 亚洲麻豆精品果冻传媒 | 精品视频一区在线观看 | 我要看欧美精品一级毛片 |