国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CGI,F(xiàn)astCGI與PHP

layman / 496人閱讀

摘要:程序處理完后,原本發(fā)送到標(biāo)準(zhǔn)輸出的信息會(huì)被轉(zhuǎn)到服務(wù)器,服務(wù)器再將結(jié)果返回給客戶端。通過相同的連接方式,響應(yīng)返回給服務(wù)器。

CGI

什么是CGI
CGI(Common Gateway Interface)是一個(gè)標(biāo)準(zhǔn)協(xié)議,它為web服務(wù)器提供了一個(gè)標(biāo)準(zhǔn)的協(xié)議,以便于服務(wù)器可以像運(yùn)行命令行接口程序那樣來運(yùn)行第三方程序,這些第三方程序可以動(dòng)態(tài)地生成web頁面。這些第三方程序被稱為CGI腳本(滿足CGI定義的程序),或者簡稱CGIs。至于這些CGI程序是如何被執(zhí)行的則是由服務(wù)器決定的。在一般情況下,CGI腳本在接收到web請求能動(dòng)態(tài)地生成HTML。

為什么會(huì)有CGI
正如瀏覽器會(huì)將請求信息發(fā)送給web服務(wù)器,web服務(wù)器在需要CGI程序時(shí)也會(huì)將一些必要的信息傳遞給CGI程序。相應(yīng)的,當(dāng)CGI程序運(yùn)行完后也需要將一些信息返回給web服務(wù)器,這些信息包括了http相應(yīng)中的一些內(nèi)容,例如:當(dāng)前請求的響應(yīng)狀態(tài),返回的內(nèi)容類型(e.g. HTML, PDF, or plain text)等等。

在很早之前,不同的web服務(wù)器會(huì)使用不同的方法去跟CGI程序交換信息,這使得CGI程序的通用性不強(qiáng)(根據(jù)不同的web服務(wù)器需要相應(yīng)的修改CGI程序)。因此CGI誕生了,它定義了一些通用的方法的來規(guī)范web服務(wù)器和CGI程序之間的信息交流。早期CGI程序主要被用來處理HTML表單。

webserver與CGI程序的連接
在web服務(wù)器中往往可以配置哪些url需要被CGI程序來處理。這通常是通過規(guī)定服務(wù)器某些目錄是屬于CGI程序的(這個(gè)目錄對應(yīng)著某種形式的url,例如“http://example.com/cgi-bin/pr...”這個(gè)url對應(yīng)著cgi-bin這個(gè)目錄,因此服務(wù)器知道這個(gè)請求需要被CGI程序來處理)

web服務(wù)器通過將必要的信息存儲(chǔ)在環(huán)境變量中,而CGI程序則從環(huán)境變量中獲取這些必要信息,因此可以實(shí)現(xiàn)二者之間的信息交換。CGI程序處理完后,原本發(fā)送到“標(biāo)準(zhǔn)輸出”的信息會(huì)被轉(zhuǎn)到web服務(wù)器,服務(wù)器再將結(jié)果返回給客戶端。

以下這些參數(shù)大多是CGI標(biāo)準(zhǔn)規(guī)定,需要由web服務(wù)器傳遞給CGI程序的(通過前面所說的“環(huán)境變量”的方式):

Server specific variables:
    SERVER_SOFTWARE: HTTP服務(wù)器的 name/version
    SERVER_NAME: 服務(wù)器的主機(jī)名(也可以是IP地址)
    GATEWAY_INTERFACE: CGI/version.
Request specific variables:
    SERVER_PROTOCOL: HTTP/version.
    SERVER_PORT: TCP 端口.
    REQUEST_METHOD: HTTP請求方式(GET,POST等).
    PATH_INFO: 路徑后綴
    PATH_TRANSLATED: 如果PATH_INFO存在的話,該參數(shù)代表相應(yīng)的在服務(wù)器上的絕對路徑。
    SCRIPT_NAME: 相應(yīng)的到程序的路徑(例如/cgi-bin/script.cgi)
    QUERY_STRING: URL中“?”后后面接著的那部分。這些請求字符串(query string)通常以“name=value”的形式出現(xiàn)(例如var1=val1&var2=val2...)
    REMOTE_HOST: 客戶端的主機(jī)名
    REMOTE_ADDR: 客戶端的ip地址。
    AUTH_TYPE: 認(rèn)證類型(如果可用的話)
    REMOTE_USER :與AUTH_TYPE相關(guān)
    REMOTE_IDENT: see ident, only if server performed such lookup.
    CONTENT_TYPE: Internet media type of input data if PUT or POST method are used, as provided via HTTP header.
    CONTENT_LENGTH: similarly, size of input data (decimal, in octets) if provided via HTTP header.
    其他與user agent相關(guān)的參數(shù)(通常就是瀏覽器) :HTTP_ACCEPT, HTTP_ACCEPT_LANGUAGE, HTTP_USER_AGENT, HTTP_COOKIE

CGI的缺點(diǎn)
每次請求都要啟動(dòng)一個(gè)CGI程序,相對于一次請求處理,啟動(dòng)過程的性能消耗占整個(gè)過程的消耗比例不小,因此如果每次請求都需要啟動(dòng)一個(gè)新的CGI程序來處理,明顯在性能上是低效的。

CGI的替代方案
由于上面提到的CGI的缺點(diǎn),出現(xiàn)了以下這些替代方案:

fastCGI(“prefork”預(yù)生成);

模塊化,直接在web服務(wù)器中運(yùn)行相應(yīng)的程序來實(shí)現(xiàn)動(dòng)態(tài)生成html(例如apache的mod_php);

使用預(yù)編譯的CGI程序(即編譯型語言);

Java的servlet

FastCGI & php-fpm

什么是FastCGI
FastCGI是在CGI標(biāo)準(zhǔn)協(xié)議上發(fā)展出來的一個(gè)變種協(xié)議,它的主要目標(biāo)是減輕web服務(wù)器與CGI程序之間交互時(shí)的負(fù)載,這樣一臺(tái)服務(wù)器就可以在同一時(shí)間處理更多的web請求。

FastCGI的實(shí)現(xiàn)細(xì)節(jié)
與CGI每次處理一個(gè)請求時(shí)都啟動(dòng)一個(gè)新的CGI程序不同,F(xiàn)astCGI使用一些常駐內(nèi)存的CGI進(jìn)程來處理源源不斷的請求。這些CGI進(jìn)程是由FastCGI管理進(jìn)程(FastCGI server)來管理,而非web服務(wù)器。當(dāng)接收到一個(gè)web請求時(shí),web服務(wù)器把一些必要的信息和頁面請求本身通過Unix域套接字( Unix domain socket),或命名管道(named pipe ),或TCP連接( TCP connection)發(fā)送給FastCGI進(jìn)程(至于發(fā)給哪個(gè)CGI進(jìn)程則是由FastCGI管理進(jìn)程來分配)。通過相同的連接方式,web響應(yīng)返回給web服務(wù)器。響應(yīng)返回后,本次連接可能會(huì)被關(guān)閉掉,但是web服務(wù)器和這些處理請求的CGI進(jìn)程會(huì)繼續(xù)駐留在內(nèi)存中,等待處理下一個(gè)請求。因此,每一個(gè)CGI進(jìn)程在它的生命周期內(nèi)可以處理很多個(gè)web請求,而不是像CGI那樣只能處理一個(gè)web請求。

什么是php-fpm
PHP-FPM (FastCGI Process Manager)是FastCGI在PHP上的具體實(shí)現(xiàn),從PHP5.3.3開始,已經(jīng)被集成到PHP的安裝包中。

Apache與php的連接

CGI(基本已經(jīng)不用)

模塊化(mod_php)

FastCGI

具體配置可以參考:
https://segmentfault.com/q/10...
http://php.net/manual/en/inst...

nginx與php的連接方式

通常使用FastCGI方式

具體配置參考
https://segmentfault.com/a/11...
http://php.net/manual/en/inst...

參考文獻(xiàn)

https://en.wikipedia.org/wiki...
https://en.wikipedia.org/wiki...
https://en.wikipedia.org/wiki...
http://php.net/manual/en/inst...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/23127.html

相關(guān)文章

  • PHP|什么是CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI

    摘要:當(dāng)客戶端請求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。什么是是一個(gè)管理器,是只用于的可以在下載得到其實(shí)是源代碼的一個(gè)補(bǔ)丁,旨在將進(jìn)程管理整合進(jìn)包中。與功能比較都是守護(hù)的進(jìn)程管理器。 什么是CGI CGI全稱是公共網(wǎng)關(guān)接口(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行交談的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。 CGI可以用任何一種語言編...

    el09xccxy 評論0 收藏0
  • 什么是CGI、FastCGIPHP-CGIPHP-FPM

    摘要:的工作原理啟動(dòng)時(shí)載入進(jìn)程管理器或進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)解釋器進(jìn)程可見多個(gè)并等待來自的連接。當(dāng)客戶端請求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。什么是是一個(gè)管理器,是只用于的其實(shí)是源代碼的一個(gè)補(bǔ)丁,旨在將進(jìn)程管理整合進(jìn)包中。 什么是CGI CGI全稱是公共網(wǎng)關(guān)接口(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行交談的一種工具,其程...

    MycLambert 評論0 收藏0
  • 深入剖析 Web 服務(wù)器 PHP 應(yīng)用之間的通信機(jī)制 - 掌握 CGI 和 FastCGI 協(xié)議的

    摘要:深入?yún)f(xié)議從功能上來講,協(xié)議已經(jīng)完全能夠解決服務(wù)器與應(yīng)用之間的數(shù)據(jù)通信問題。消息頭信息主要的消息頭信息如下用于表示協(xié)議版本號。從服務(wù)器發(fā)送到應(yīng)用,表示中止一個(gè)處理中的請求。另外我們還需要明確一點(diǎn)就是服務(wù)器與進(jìn)程間通信是無序的。 本文首發(fā)于 深入剖析 Web 服務(wù)器與 PHP 應(yīng)用之間的通信機(jī)制 - 掌握 CGI 和 FastCGI 協(xié)議的運(yùn)行原理,轉(zhuǎn)載請注明出處! 身為一名使用 PHP ...

    mumumu 評論0 收藏0
  • 困擾已久的問題cgi、fastcgiPHP-fpm匯總

    摘要:通過或在服務(wù)器上運(yùn)行時(shí)可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進(jìn)程管理器,至于是什么文章后面再分析,這里就當(dāng)作解釋器。就是為了解決的問題,制定的協(xié)議。 一個(gè)模糊的概念 無論是php,python編程語言,還是apache,nginx服務(wù)器對于cgi協(xié)議是個(gè)繞不開的話題。安裝,部署都會(huì)經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進(jìn)行一波匯總,徹底告別這...

    nidaye 評論0 收藏0
  • 困擾已久的問題cgi、fastcgiPHP-fpm匯總

    摘要:通過或在服務(wù)器上運(yùn)行時(shí)可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進(jìn)程管理器,至于是什么文章后面再分析,這里就當(dāng)作解釋器。就是為了解決的問題,制定的協(xié)議。 一個(gè)模糊的概念 無論是php,python編程語言,還是apache,nginx服務(wù)器對于cgi協(xié)議是個(gè)繞不開的話題。安裝,部署都會(huì)經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進(jìn)行一波匯總,徹底告別這...

    Hwg 評論0 收藏0
  • 困擾已久的問題cgi、fastcgiPHP-fpm匯總

    摘要:通過或在服務(wù)器上運(yùn)行時(shí)可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進(jìn)程管理器,至于是什么文章后面再分析,這里就當(dāng)作解釋器。就是為了解決的問題,制定的協(xié)議。 一個(gè)模糊的概念 無論是php,python編程語言,還是apache,nginx服務(wù)器對于cgi協(xié)議是個(gè)繞不開的話題。安裝,部署都會(huì)經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進(jìn)行一波匯總,徹底告別這...

    Winer 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<