FastCGI for IIS
Microsoft is excited to announce a technical preview release of FastCGI for IIS, a new component for Microsoft's Web server platform. This release is available immediately for download to Windows Vista, Windows Server codenamed "Longhorn" and previous versions of IIS including IIS 6.0 in Windows 2003 Server and IIS 5.1 in Windows XP.
This announcement coincides with a broader announcement regarding collaboration between Microsoft and Zend to improve performance and stability of PHP on the Windows platform. This effort aims to help PHP developers achieve improved performance on the Windows platform by leveraging the new IIS FastCGI feature together with Zend’s on-going work to improve the PHP engine on Windows. For more information regarding this announcement, see the news release on Zend's site.
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. For more information on how FastCGI works, see http://www.fastcgi.com/devkit/doc/fastcgi-whitepaper/fastcgi.htm.
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. Learn more about setting up PHP together with IIS FastCGI in the article Using FastCGI with PHP.
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?
IMPORTANT: This release is a technical preview and is intended for evaluation purposes. It is not intended for mission-critical deployment. Be sure to review the full license agreement before downloading and installing this feature.
For Windows XP (IIS 5.1) and Windows 2003 (IIS 6.0) customers:
Download the technical preview release of FastCGI component for IIS 6.0 and Windows Server 2003 and IIS 5.1 with Windows XP.
For Windows Vista and Windows Server codenamed "Longhorn" (IIS 7.0) customers:
Download the technical preview release of FastCGI component for IIS7 – Windows Vista. In order to run this module, you must have a machine running Windows Vista RC1+ or the latest Windows Server codenamed "Longhorn" Community Technical Preview release with IIS 7 installed.
To install FastGCI, follow the instructions in the readme.txt file in the download package.
Where can I get more information?
For a walk-through article describing the exact steps to get FastGCI and PHP running, see the Using FastCGI with PHP article.