CGI 和 FastCGI

CGI(Common Gateway Interface,公共網關接口)是一種標準協議,這種協議能夠爲一個應用程序和一個 Web 瀏覽器之間進行交互提供通訊支持。CGI 最先出現於 1993 年,全部版本的 IIS 都爲 CGI 提供了支持。在 IIS 上運行 CGI 時,CGI 處理請求的方式存在一些問題。對於 CGI 應用程序處理的每一個新請求,IIS 都必須建立一個新的進程,待進程執行結束後,再關閉該進程。IIS 能夠迅速地處理請求,可是,啓動和中止進程的開銷可能會成爲性能瓶頸,這就是在 IIS 上運行 CGI 時,CGI 處理請求方式存在的問題。所以,IIS 引入了 FastCGI。 FastCGI可以部分解決上述性能瓶頸問題。瀏覽器

FastCGI (C:\Windows\System32\inetsrv\iisfcgi.dll)是一種新版本的 CGI,能知足大多數原有的 CGI 規範。然而,FastCGI 並無在請求處理完畢時關閉一個進程,而是令這個進程繼續運行,並處理其餘請求。與 CGI 相似,FastCGI 也是單線程的,可是與 CGI 相比,當使用 FastCGI 時,服務器能夠處理更多的請求,這是由於,進程仍然處於打開的狀態。在 IIS 7.0 中,FastCGI 是使用內置的 API 實現的,而且被實現爲一個本機的模塊。服務器

爲何要使用 FastCGI 呢?這是由於目前仍然存在大量的 PHP 應用程序,這些應用程序獲得了普遍的應用。儘管這些應用程序一般使用了 CGI 版本或 ISAPI 版本的 PHP,可是,FastCGI 可以進一步提升這些應用程序的運行性能。ide

由於 FastCGI 是一種單線程的應用程序,所以必須啓動多個線程來處理多個請求。這些進程能夠聚集到一個進程池,組成不一樣的進程組,這樣即可以統一管理這些進程組。一個進程組的屬性能夠是託管的,舉例來講,一個進程組中的進程數量,以及一個進程在回收以前能夠處理的請求數量等,都屬於進程組的屬性,而且能夠受託管。一個進程組中能夠包含多個進程,FastCGI 也能夠同時運行多個進程組,而且每一個進程組均可以擁有本身的設置。 性能

相關文章
相關標籤/搜索