快速通用網(wǎng)關(guān)接口(Fast Common Gateway Interface/FastCGI)是通用網(wǎng)關(guān)接口(CGI)的改進(jìn),描述了客戶端和服務(wù)器程序之間傳輸數(shù)據(jù)的一種標(biāo)準(zhǔn)。
FastCGI致力于減少Web服務(wù)器與CGI程式之間互動的開銷,從而使服務(wù)器可以同時處理更多的Web請求。與為每個請求創(chuàng)建一個新的進(jìn)程不同,FastCGI使用持續(xù)的進(jìn)程來處理一連串的請求。這些進(jìn)程由FastCGI進(jìn)程管理器管理,而不是web服務(wù)器。
由于FastCGI程序并不需要不斷的產(chǎn)生新進(jìn)程,可以大大降低服務(wù)器的壓力并且產(chǎn)生較高的應(yīng)用效率。它的速度效率最少要比CGI 技術(shù)提高 5 倍以上。它還支持分布式的部署,即
FastCGI 程序可以在web 服務(wù)器以外的主機(jī)上執(zhí)行。
CGI 是所謂的短生存期應(yīng)用程序,FastCGI 是所謂的長生存期應(yīng)用程序。FastCGI像是一個常駐(long-live)型的CGI,它可以一直執(zhí)行著,不會每次都要花費(fèi)時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。
7.2.3.1 什么是spawn-fcgi
Nginx不能像Apache那樣直接執(zhí)行外部可執(zhí)行程序,但Nginx可以作為代理服務(wù)器,將請求轉(zhuǎn)發(fā)給后端服務(wù)器,這也是Nginx的主要作用之一。其中Nginx就支持FastCGI代理,接收客戶端的請求,然后將請求轉(zhuǎn)發(fā)給后端FastCGI進(jìn)程。
由于FastCGI進(jìn)程由FastCGI進(jìn)程管理器管理,而不是Nginx。這樣就需要一個FastCGI進(jìn)程管理器,管理我們編寫FastCGI程序。
spawn-fcgi是一個通用的FastCGI進(jìn)程管理器,簡單小巧,原先是屬于lighttpd的一部分,后來由于使用比較廣泛,所以就遷移出來作為獨(dú)立項(xiàng)目。
spawn-fcgi使用pre-fork 模型,功能主要是打開監(jiān)聽端口,綁定地址,然后fork-and-exec創(chuàng)建我們編寫的FastCGI應(yīng)用程序進(jìn)程,退出完成工作。FastCGI應(yīng)用程序初始化,然后進(jìn)入死循環(huán)偵聽socket的連接請求。
Nginx不能像Apache那樣直接執(zhí)行外部可執(zhí)行程序,但Nginx可以作為代理服務(wù)器,將請求轉(zhuǎn)發(fā)給后端服務(wù)器,這也是Nginx的主要作用之一。其中Nginx就支持FastCGI代理,接收客戶端的請求,然后將請求轉(zhuǎn)發(fā)給后端FastCGI進(jìn)程。
由于FastCGI進(jìn)程由FastCGI進(jìn)程管理器管理,而不是Nginx。這樣就需要一個FastCGI進(jìn)程管理器,管理我們編寫FastCGI程序。
spawn-fcgi是一個通用的FastCGI進(jìn)程管理器,簡單小巧,原先是屬于lighttpd的一部分,后來由于使用比較廣泛,所以就遷移出來作為獨(dú)立項(xiàng)目。
spawn-fcgi使用pre-fork 模型,功能主要是打開監(jiān)聽端口,綁定地址,然后fork-and-exec創(chuàng)建我們編寫的FastCGI應(yīng)用程序進(jìn)程,退出完成工作。FastCGI應(yīng)用程序初始化,然后進(jìn)入死循環(huán)偵聽socket的連接請求。
聯(lián)系客服