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.

IIS status codes

I don’t know every entry by heart, so this page is bookmarked…
Hope you find it useful.

1xx – Informational

These status codes indicate a provisional response. The client should be prepared to receive one or more 1xx responses before receiving a regular response.

  • 100 – Continue.
  • 101 – Switching protocols.

2xx – Success

This class of status codes indicates that the server successfully accepted the client request.

  • 200 – OK. The client request has succeeded.
  • 201 – Created.
  • 202 – Accepted.
  • 203 – Non-authoritative information.
  • 204 – No content.
  • 205 – Reset content.
  • 206 – Partial content.

3xx – Redirection

The client browser must take more action to fulfill the request. For example, the browser may have to request a different page on the server or repeat the request by using a proxy server.

  • 301 – Moved Permanently
  • 302 – Object moved.
  • 304 – Not modified.
  • 307 – Temporary redirect.

4xx – Client Error

An error occurs, and the client appears to be at fault. For example, the client may request a page that does not exist, or the client may not provide valid authentication information.

  • 400 – Bad request.
  • 401 – Access denied. IIS defines a number of different 401 errors that indicate a more specific cause of the error. These specific error codes are displayed in the browser but are not displayed in the IIS log:
  • 401.1 – Logon failed.
  • 401.2 – Logon failed due to server configuration.
  • 401.3 – Unauthorized due to ACL on resource.
  • 401.4 – Authorization failed by filter.
  • 401.5 – Authorization failed by ISAPI/CGI application.
  • 401.7 – Access denied by URL authorization policy on the Web server. This error code is specific to IIS 6.0.
  • 403 – Forbidden. IIS defines a number of different 403 errors that indicate a more specific cause of the error:
  • 403.1 – Execute access forbidden.
  • 403.2 – Read access forbidden.
  • 403.3 – Write access forbidden.
  • 403.4 – SSL required.
  • 403.5 – SSL 128 required.
  • 403.6 – IP address rejected.
  • 403.7 – Client certificate required.
  • 403.8 – Site access denied.
  • 403.9 – Too many users.
  • 403.10 – Invalid configuration.
  • 403.11 – Password change.
  • 403.12 – Mapper denied access.
  • 403.13 – Client certificate revoked.
  • 403.14 – Directory listing denied.
  • 403.15 – Client Access Licenses exceeded.
  • 403.16 – Client certificate is untrusted or invalid.
  • 403.17 – Client certificate has expired or is not yet valid.
  • 403.18 – Cannot execute requested URL in the current application pool. This error code is specific to IIS 6.0.
  • 403.19 – Cannot execute CGIs for the client in this application pool. This error code is specific to IIS 6.0.
  • 403.20 – Passport logon failed. This error code is specific to IIS 6.0.
  • 404 – Not found.
  • 404.0 – (None) File or directory not found.
  • 404.1 – Web site not accessible on the requested port.
  • 404.2 – Web service extension lockdown policy prevents this request.
  • 404.3 – MIME map policy prevents this request.
  • 405 – HTTP verb used to access this page is not allowed (method not allowed.)
  • 406 – Client browser does not accept the MIME type of the requested page.
  • 407 – Proxy authentication required.
  • 412 – Precondition failed.
  • 413 – Request entity too large.
  • 414 – Request-URI too long.
  • 415 – Unsupported media type.
  • 416 – Requested range not satisfiable.
  • 417 – Execution failed.
  • 423 – Locked error.

5xx – Server Error

The server cannot complete the request because it encounters an error.

  • 500 – Internal server error.
  • 500.12 – Application is busy restarting on the Web server.
  • 500.13 – Web server is too busy.
  • 500.15 – Direct requests for Global.asa are not allowed.
  • 500.16 – UNC authorization credentials incorrect. This error code is specific to IIS 6.0.
  • 500.18 – URL authorization store cannot be opened. This error code is specific to IIS 6.0.
  • 500.100 – Internal ASP error.
  • 501 – Header values specify a configuration that is not implemented.
  • 502 – Web server received an invalid response while acting as a gateway or proxy.
  • 502.1 – CGI application timeout.
  • 502.2 – Error in CGI application.
  • 503 – Service unavailable. This error code is specific to IIS 6.0.
  • 504 – Gateway timeout.
  • 505 – HTTP version not supported.

Almost 4000 Requests/sec on Vista running IIS 7

Bill Staples is a long time web enthusiast currently working at Microsoft Corporation as the Product Unit Manager for the Internet Information Services (IIS) team. And he bloged an entry at Blogs.IIS.Net where he writes about IIS 7 running a Vista at superman speed… And this is on a desktop machine, imagine such power on a server… Whohaa…

IIS on Vista is a lot more powerful than previous releases of IIS on the Windows professional SKUs. It is much less restrictive and can now be used a as a fully capable Web server. For the first time, it’s also available on Home SKUs of Windows as well, which will hopefully make it great for those still in school or hobbyists at home. The lack of these annoying roadblocks made my experience using IIS7/Vista so much fun this weekend, and I’m sure you’ll experience the same result. Check back soon for the other reasons I fell in love with IIS7 on Vista. 🙂

Read the whole article at the source