Mettons de côté les débats concernant les coûts et la robustesse de la plate-forme Windows et du serveur Web ISS (cf études TCO - Total Cost of OwnerShip - des plate-formes Windows et études Mission Critical Applications, qui placent l'OS Windows Serveur comme parmi les moins chers, les plus performants et les plus utilisés pour les applications Web de critiques à haute disponibilité),

Il faut reconnaître que les performances des runtimes sont variables selon les technologies :

  • .Net : évidemment, la technologie ASP.Net présente d'excellentes performances sous Windows
  • Java : les JVM sous Windows sont nombreuses, performantes et supportées par des éditeurs, si bien que la plate-forme Windows est fréquemment utilisée en production pour exécuter un runtime IBM/WebSphere, BEA/WebLogic ou opensource
  • PHP : les performances de la passerelle CGI d'IIS sous Windows sont historiquement lentes, c'est-à-dire sans commune mesure avec les performances constatées sous d'autres OS, si bien qu'IIS n'était pas un candidat pour les applications Web PHP critiques à hautes performances.

FastCGI : exécuter ses applications PHP sous IIS

La collaboration depuis 2006 entre Microsoft et Zend a porté ses fruits, au travers de l'extension "Microsoft FastCGI for Windows Serveur 2003.
En licence Go Live, l'extension FastCGI pour IIS 6 est donc supportée en production, sans attendre la version finale, prévue pour début 2008.

Cette même extension FastCGI sera disponible sur Windows Serveur 2008 avec IIS version 7 (qui apporteune forte modularité : externalisation des fichiers en XML, segmentation du runtime IIS en noyau et modules...).
FastCGI pour IIS 7 (WS2008 et Vista) est en Technical Preview, attention, ce n'est pas un Go-Live.

Pour en savoir plus sur le hosting PHP sous IIS, consulter la section PHP du site IIS.net

Et comment ça marche ?

Extrait du site IIS 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.