Microsoft FastCGI Extension for IIS 1.5
The IIS FastCGI Extension enables popular application frameworks like PHP be hosted on the IIS web server in a high-performance and reliable way. FastCGI provides a high-performance alternative to the Common Gateway Interface (CGI), a standard way of interfacing external applications with Web servers that has been supported as part of the IIS feature-set since the very first release.
Most applications built to for IIS take advantage of the native, multi-threaded extensibility model of IIS. Many popular applications, particularly those written or originally designed for Linux, are not multi-threaded, and instead take a multi-process approach to concurrency.
While the PHP engine itself is multi-thread capable, many of the popular PHP extensions are not, requiring a single concurrent request guarantee to operate reliably. This forces the use of CGI and results in poor performance on the Windows platform. FastCGI helps these application frameworks to achieve improved performance on Windows over CGI, while allowing stable operation in production environments.
Key Features of Microsoft FastCGI Extension for IIS:
- Monitor changes to a file. The extension can be configured to listen for file change notifications on a specific file and when that file changes, the extension will recycle FastCGI processes for the process pool. This feature can be used to recycle PHP processes when changes to php.ini file occur.
- Real-time tuning of MaxInstances setting. This MaxInstances setting dictates the maximum number of FastCGI processes which can be launched for each application pool. If it is set to 0 then FastCGI extension will automatically adjust the number of instances up or down every few seconds based on the system load and number of requests waiting in the queue.
- STDERR stream handling. There are several options of how the extension can handle text sent by FastCGI application on STDERR. The extension can send the error data as a failure response to the HTTP client or it can ignore the error and send whatever was received on STDOUT as a response with 200 status code.
- Sending a termination signal to FastCGI processes. The extension can be configured to send a termination signal to FastCGI process before terminating it. This enables FastCGI process to do a clean shutdown before getting killed.
- _FCGI_X_PIPE_ environment variable. This variable is set by FastCGI extension and it contains the name of the named pipe that is used for communication between the extension and FastCGI process.
- Relaxed enforcement of response headers syntax. The FastCGI extension has less strict enforcements for the correctness of the response headers.
- IIS 5.1,
- IIS 6.0,
- IIS 7.0.