Héberger ses applications PHP sur Windows Serveur avec FastCGI
Par Stève SFARTZ le mardi 25 septembre 2007, 09:22 - Architecture - Lien permanent
Dans la mesure où la quasi totallité des développeurs Web en Entreprise
travaille en environnement Windows, on pouvait se demander pourquoi le serveur
Web IIS (Internet Information Serveur) n'était pas systématiquement utilisé en
production ? Et pour cause, les applications étant testés par le
développeur sur la plate-forme Windows, le coût d'intégration est d'autant plus
réduit que l'on déploie sur la même plate-forme !
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 ?
"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.