CGI和FastCGI

  

CGI(公共网关接口,公共网关接口)是一种标准协议,这种协议可以为一个应用程序和一个网页浏览器之间进行交互提供通信支持. 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能够进一步提高这些应用程序的运行性能。

  

因为FastCGI是一种单线程的应用程序,因此必须启动多个线程来处理多个请求。这些进程可以汇集到一个进程池,组成不同的进程组,这样便可以统一管理这些进程组。一个进程组的属性可以是托管的,举例来说,一个进程组中的进程数量,以及一个进程在回收之前可以处理的请求数量等,都属于进程组的属性,并且可以受托管。一个进程组中可以包含多个进程,FastCGI也可以同时运行多个进程组,并且每个进程组都可以拥有自己的设置。

CGI和FastCGI