cgi與fastcgi的區別

2021-10-06 17:36:58 字數 1160 閱讀 4701

工作的原理:

每當客戶請求cgi的時候,web伺服器就請求作業系統生成乙個(fork)新的cgi直譯器程序(如php-cgi.exe),當cgi滿足要求後,web伺服器就殺死這個程序

概念:fastcgi是用來提高cgi程式效能的。類似於cgi,fastcgi也可以說是一種協議

工作原理:

web server 啟動時載入fastcgi程序管理器

fastcgi程序管理器自身初始化,啟動多個cgi直譯器程序 (在任務管理器中可見多個php-cgi.exe)並等待來自web server的連線。啟動php-cgi fastcgi程序時,可以配置以tcp和unix套接字(socket)兩種方式啟動

當客戶端請求到達web server時,web server將請求採用tcp協議或socket方式**到fastcgi主程序,fastcgi主程序選擇並連線到乙個cgi直譯器(子程序php-cgi.exe)。web server將cgi環境變數和標準輸入傳送到fastcgi子程序php-cgi.exe。

fastcgi子程序php-cgi.ex完成處理後將標準輸出和錯誤資訊從同一連線返回web server。當fastcgi子程序關閉連線時,請求便告處理完成。fastcgi子程序接著等待並處理來自fastcgi程序管理器(執行在 webserver中)的下乙個連線。 而在cgi中,php-cgi子程序在此便被退出了

在web伺服器方面

對資料進行處理的程序方面

cgifork乙個新的程序進行處理

讀取引數,處理資料,結束程序

fastcgi

用tcp方式跟遠端機子上的程序或者本地程序進行連連線

要開啟tcp埠,進入迴圈,等待資料的到來,處理資料

相較於cgi,fastcgi對於php指令碼執行速度更快,php解釋程式被載入記憶體而不是每次需要時從儲存器讀取,極大提公升了依靠指令碼執行站點的效能.

需要使用的系統資源更少,由於伺服器不用在每次需要時都載入php解釋程式,你可以將站點的傳輸速度提公升很多而不必增加cpu負擔

從效能上看,fastcgi把動態邏輯的處理從server中分離出來,大負荷的io處理還是留給宿主server,這樣宿主server可以一心一意作io,對於乙個普通的動態網頁來說, 邏輯處理可能只有一小部分,大量的是等靜態

fastcgi與cgi的區別

fastcgi與cgi的區別 先講下cgi cgi在2000年或更早的時候用得比較多,以前web伺服器一般只處理靜態的請求,如果碰到乙個動態請求怎麼辦呢?web伺服器會根據這次請求的內容,然後會fork乙個新程序來執行外部c程式 或perl指令碼.這個程序會把處理完的資料返回給web伺服器,最後we...

FastCgi 和Cgi的區別

cgi 1.fork and excute 每次來乙個請求,就fork出去乙個子程序,結束之後再關閉。來新請求還要重新fork子程序。fastcgi 可以理解為常駐型的cgi。使用了程序 執行緒池的概念 master程序,和眾多worker程序 每次來乙個請求時,只需要將socket長連線 包含環境...

CGI 和 FastCGI 協議的執行原理

在用php開發的過程中,我們常常使用nginx或者apache作為我們的web伺服器。但是php是如何與這些web伺服器通訊的呢?要談fastcgi就必須先說說cgi。那什麼是cgi?cgi協議同 http 協議一樣是乙個 應用層 協議,它的 功能 是為了解決 web 伺服器與 php 應用 或其他...