php與apache整合類型有哪些

這篇文章將為大家詳細(xì)講解有關(guān)php與apache整合類型有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出西安免費(fèi)做網(wǎng)站回饋大家。

一、CGI

CGI(common gateway interface)通常翻譯為共同網(wǎng)關(guān)接口,是HTTP服務(wù)器與機(jī)器上的其他程序進(jìn)行通信的一個(gè)接口,讓W(xué)eb服務(wù)器必要時(shí)啟動(dòng)額外的程序處理動(dòng)態(tài)內(nèi)容。CGI是一種協(xié)議,它定義了Webserver與CGI程序的通信方式。Webserver接受客戶端的HTTP請(qǐng)求,然后建立進(jìn)程執(zhí)行CGI程序,客戶端的請(qǐng)求被傳遞給CGI程序,CGI執(zhí)行后結(jié)果再返回Webserver。

CGI的出現(xiàn)讓W(xué)EB從靜態(tài)變?yōu)闉閯?dòng)態(tài),隨著Web的越來越普及,很多的網(wǎng)站的都需要有動(dòng)態(tài)的頁(yè)面,以便與瀏覽者互交。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,CGI方式的缺點(diǎn)也越來越突出。每次客戶端請(qǐng)求都需要建立和銷毀進(jìn)程。因?yàn)镠TTP要生成一個(gè)動(dòng)態(tài)頁(yè)面,系統(tǒng)就必須啟動(dòng)一個(gè)新的進(jìn)程以運(yùn)行CGI程序,不斷地fork是一項(xiàng)很消耗時(shí)間和資源的工作。

二、FastCGI

眾所周知,CGI解釋器的反復(fù)加載是CGI性能低下的主要原因,如果CGI解釋器保持在內(nèi)存中 并接受FastCGI進(jìn)程管理器調(diào)度,則可以提供良好的性能、伸縮性、Fail-Over特性等等。

FastCGI是一個(gè)常駐型的CGI,可以一直執(zhí)行,只要激活后,不會(huì)每次都花時(shí)間去fork一次,而且還支持分布式運(yùn)算(使得php程序解釋執(zhí)行可以單獨(dú)交給php服務(wù)器),即可以在網(wǎng)站服務(wù)器以外的主機(jī)上執(zhí)行并且接受來自其它網(wǎng)站服務(wù)器來的請(qǐng)求。

1、Web Server 啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(IIS ISAPI或Apache Module);

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

3、當(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.exe。

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

三、Module

把php編譯為apache的模塊,就要考慮apache的MPM的工作模式。

首先我們要了解什么是MPM:

MPM:Multi Path Modules (多道處理模塊)用于定義apache在響應(yīng)多個(gè)用戶請(qǐng)求時(shí)所工作的模型。有三種MPM模式:

prefork(一個(gè)請(qǐng)求一個(gè)進(jìn)程響應(yīng));

worker(一個(gè)請(qǐng)求用一個(gè)線程響應(yīng),啟動(dòng)多個(gè)進(jìn)程每個(gè)進(jìn)程生成多個(gè)線程);

event(一個(gè)進(jìn)程處理多個(gè)請(qǐng)求);

以模塊安裝的php沒有獨(dú)立的進(jìn)程,是作為apache的模塊和apache一起啟動(dòng)的。

以上三種MPM模式,worker模式會(huì)比prefork模式占據(jù)更少的內(nèi)存,高并發(fā)下的表現(xiàn)更好。而且使用多進(jìn)程和多線程混合模式,即使有一個(gè)線程掛了,也只影響和該線程同進(jìn)程的其他線程,不會(huì)影響到其他的進(jìn)程。但是如果有特別多的線程都使用keep-alive的長(zhǎng)連接方式,則線程會(huì)一直被占據(jù)直到超時(shí)才釋放,導(dǎo)致在高并發(fā)場(chǎng)景下無可用線程。而event模式使用了一個(gè)專門的線程來處理這些keep-alive類線程,較好的解決了這個(gè)問題。

關(guān)于php與apache整合類型有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文標(biāo)題:php與apache整合類型有哪些
文章位置:http://muchs.cn/article14/pphjde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、App開發(fā)、云服務(wù)器、商城網(wǎng)站、軟件開發(fā)定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司