What is FastCGI?

Today a found this artilce from the IIS team people.

Today, Microsoft and Zend announced a joint technical preview aimed at providing best-ever support for running PHP applications on IIS in a reliable, and hi-performance way.

What is FastCGI?

The IIS FastCGI component 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.

CGI programs are executables launched by the web server for each request in order to process the request and generate dynamic responses that are sent back to the client. Because many of these frameworks do not support multi-threaded execution, CGI enables them to execute reliably on IIS by executing exactly one request per process. Unfortunately, it provides poor performance due to the high cost of starting and shutting down a process for each request.

FastCGI overcomes this performance penalty by re-using CGI processes to service subsequent requests, while continuing to ensure single request concurrency.

This technical preview contains an IIS7 module that provides FastCGI support on Windows Vista and Windows Server codenamed “Longhorn” Technical Preview releases, and an ISAPI extension that provides FastCGI support for previous versions of IIS on Windows Server 2003, Windows XP, and Windows 2000. The Microsoft FastCGI component for IIS feature provides improved performance and (when the final version is released) will be supported along with the rest of the IIS feature-set.

If you want to learn more about the FastCGI protocol, read more at http://www.fastcgi.com/devkit/doc/fcgi-spec.html.

Why is FastCGI important?

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.

Where can I download FastCGI?

The Microsoft IIS FastCGI technical preview provides two FastCGI packages for use with different versions of IIS:

* IIS 7 on Windows Vista and Windows Server codenamed “Longhorn” – download here.
* IIS 5.x / IIS 6 on Windows XP and Windows Server 2003 – download here.

Both FastCGI packages are fully compatible with the current official PHP distribution for Windows available from www.php.net/downloads.

However, Zend’s Zend Core for Windows technical preview provides a PHP distribution that has been optimized for Windows, resulting in much better core PHP performance then was ever possible in the past.

It is recommended that you download the Zend Core for Windows technical preview for use with the IIS FastCGI package to provide the best available level of PHP performance and stability.

View all the info at the source.