溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php與apache整合類型有哪些

發(fā)布時間:2020-10-27 11:38:42 來源:億速云 閱讀:141 作者:小新 欄目:編程語言

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

一、CGI

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

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

二、FastCGI

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

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

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

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

3、當(dāng)客戶端請求到達(dá)Web Server時,F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個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)輸出和錯誤信息從同一連接返回Web Server。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時,請求便告處理完成。FastCGI子進(jìn)程接著等待并處理來自FastCGI進(jìn)程管理器(運(yùn)行在 WebServer中)的下一個連接。 在正常的CGI模式中,php-cgi.exe在此便退出了。

三、Module

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

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

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

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

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

event(一個進(jìn)程處理多個請求);

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

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

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI