摘要:二工作流程進程管理器自身初始化,啟動多個解釋器進程,并等待來自的連接。服務器與進程管理器進行通信,通過協(xié)議發(fā)送環(huán)境變量和標準輸入數(shù)據(jù)給解釋器進程。解釋器進程完成處理后將標準輸出和錯誤信息從同一連接返回。
CGI
一. CGI是什么
CGI,全稱是Common Gateway Interface,翻譯過來就是“通用網(wǎng)關接口”,定義了一個接口標準,描述了數(shù)據(jù)怎么在服務器和外部應用程序之間怎么傳遞。
二. CGI的來歷
在很早之前,互聯(lián)網(wǎng)只有些靜態(tài)內(nèi)容,瀏覽器發(fā)送資源請求,服務器接受請求并返回服務器上的靜態(tài)文件即可。
隨著互聯(lián)網(wǎng)的發(fā)展,動態(tài)內(nèi)容產(chǎn)生了,這些動態(tài)內(nèi)容涉及到了數(shù)據(jù)庫,能夠操作數(shù)據(jù)庫的動態(tài)語言將數(shù)據(jù)處理后返回給WebServer,WebServer再返回給瀏覽器。
由于有很多種動態(tài)語言和很多種瀏覽器,它們之間面臨著不兼容的情況,這時候就需要在它們之間設立一個接口標準,這就是CGI。瀏覽器發(fā)起請求,WebServer會將請求發(fā)給對應的CGI程序,CGI再調(diào)用外部程序來處理請求并返回結(jié)果。
三. CGI的作用
WebServer是通過如下方式來CGI程序進行通信的,所以只要支持標準輸入輸出和環(huán)境變量的語言,都能用來編寫CGI程序。
環(huán)境變量(請求類型,請求IP..)
標準輸入(請求主體)
標準輸出(請求響應)
CGI描述了如何在環(huán)境變量中傳遞請求的基本信息,如何通過標準輸入傳遞請求體,以及如何通過標準輸出來傳遞輸出。這就使編程語言可以很容易得使用環(huán)境變量、標準輸入輸出
四. CGI的缺點
WebServer在接收到請求時,會先fork出CGI進程,然后處理請求,處理完后結(jié)束這個進程,這就是 fork-and-execute 模式。所以用 CGI 方式的服務器有多少連接請求就會有多少 CGI 進程,每個進程都會加載解析PHP配置,初始化執(zhí)行環(huán)境,那么當高并發(fā)請求時,會大量擠占系統(tǒng)的資源如內(nèi)存,CPU 時間等,造成效能低下。
PHP-CGI是php的CGI程序,不進行進程管理
FastCGI一. FastCGI的簡介
FastCGI是Web服務器和處理程序之間通信的一種協(xié)議, 是CGI的一種改進方案,F(xiàn)astCGI像是一個常駐(long-lived)型的CGI, 它可以一直執(zhí)行,在請求到達時不會花費時間去fork一個進程來處理(這是CGI最為人詬病的fork-and-execute模式)。 正是因為他只是一個通信協(xié)議,它還支持分布式的運算,所以 FastCGI 程序可以在網(wǎng)站服務器以外的主機上執(zhí)行,并且可以接受來自其它網(wǎng)站服務器的請求。
FastCGI 是與語言無關的、可伸縮架構(gòu)的 CGI 開放擴展,將 CGI 解釋器進程保持在內(nèi)存中,以此獲得較高的性能。 CGI 程序反復加載是 CGI 性能低下的主要原因,如果 CGI 程序保持在內(nèi)存中并接受 FastCGI 進程管理器調(diào)度, 則可以提供良好的性能、伸縮性、Fail-Over 特性等。
二. FastCGI工作流程
FastCGI 進程管理器自身初始化,啟動多個 CGI 解釋器進程,并等待來自 Web Server 的連接。
Web 服務器與 FastCGI 進程管理器進行 Socket 通信,通過 FastCGI 協(xié)議發(fā)送 CGI 環(huán)境變量和標準輸入數(shù)據(jù)給 CGI 解釋器進程。
CGI 解釋器進程完成處理后將標準輸出和錯誤信息從同一連接返回 Web Server。
CGI 解釋器進程接著等待并處理來自 Web Server 的下一個連接。
FastCGI 與傳統(tǒng) CGI 模式的區(qū)別之一則是 Web 服務器不是直接執(zhí)行 CGI 程序了,而是通過 Socket 與 FastCGI 響應器(FastCGI 進程管理器)進行交互,也正是由于 FastCGI 進程管理器是基于 Socket 通信的,所以也是分布式的,Web 服務器可以和 CGI 響應器服務器分開部署。Web 服務器需要將數(shù)據(jù) CGI/1.1 的規(guī)范封裝在遵循 FastCGI 協(xié)議包中發(fā)送給 FastCGI 響應器程序。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28378.html
摘要:的工作原理啟動時載入進程管理器或進程管理器自身初始化,啟動多個解釋器進程可見多個并等待來自的連接。當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。什么是是一個管理器,是只用于的其實是源代碼的一個補丁,旨在將進程管理整合進包中。 什么是CGI CGI全稱是公共網(wǎng)關接口(Common Gateway Interface),HTTP服務器與你的或其它機器上的程序進行交談的一種工具,其程...
摘要:原理啟動時載入進程管理器或進程管理器自身初始化,啟動多個解釋器進程可見多個并等待來自的連接。當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。子進程接著等待并處理來自進程管理器運行在中的下一個連接。 CGI 簡介 CGI全稱是通用網(wǎng)關接口(Common Gateway Interface),是外部應用程序與與服務器之間的接口標準,是在CGI程序和web服務器之間傳遞信息的規(guī)程。 在...
摘要:當客戶端請求到達時,進程管理器選擇并連接到一個解釋器。什么是是一個管理器,是只用于的可以在下載得到其實是源代碼的一個補丁,旨在將進程管理整合進包中。與功能比較都是守護的進程管理器。 什么是CGI CGI全稱是公共網(wǎng)關接口(Common Gateway Interface),HTTP服務器與你的或其它機器上的程序進行交談的一種工具,其程序須運行在網(wǎng)絡服務器上。 CGI可以用任何一種語言編...
摘要:通過或在服務器上運行時可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進程管理器,至于是什么文章后面再分析,這里就當作解釋器。就是為了解決的問題,制定的協(xié)議。 一個模糊的概念 無論是php,python編程語言,還是apache,nginx服務器對于cgi協(xié)議是個繞不開的話題。安裝,部署都會經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進行一波匯總,徹底告別這...
摘要:通過或在服務器上運行時可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進程管理器,至于是什么文章后面再分析,這里就當作解釋器。就是為了解決的問題,制定的協(xié)議。 一個模糊的概念 無論是php,python編程語言,還是apache,nginx服務器對于cgi協(xié)議是個繞不開的話題。安裝,部署都會經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進行一波匯總,徹底告別這...
摘要:通過或在服務器上運行時可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進程管理器,至于是什么文章后面再分析,這里就當作解釋器。就是為了解決的問題,制定的協(xié)議。 一個模糊的概念 無論是php,python編程語言,還是apache,nginx服務器對于cgi協(xié)議是個繞不開的話題。安裝,部署都會經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進行一波匯總,徹底告別這...
閱讀 2078·2023-04-25 17:57
閱讀 1284·2021-11-24 09:39
閱讀 2482·2019-08-29 16:39
閱讀 3312·2019-08-29 13:44
閱讀 3117·2019-08-29 13:14
閱讀 2313·2019-08-26 11:36
閱讀 3810·2019-08-26 11:00
閱讀 948·2019-08-26 10:14