Monday, November 12, 2007

Production-ready PHP on Windows

Today Microsoft announced the general availability of their FastCGI Extension for IIS 6.0 (Windows Server 2003). This announcement comes a year after Zend & Microsoft announced a partnership geared toward delivering better interoperability between PHP and the Windows platform.

For me this announcement is an important milestone. PHP had suffered years of neglect when it came to performance and reliability on Windows. In fact, the last serious effort to make it run well on Windows was back in 2001 when a small (underground) team at Microsoft invited the PHP development team up to Redmond for a few days to work in their labs to stress and performance test PHP. Zeev Suraski, Shane Caraveo and I made the journey up there and managed to significantly improve PHP on Windows. However, due to the fact that the team at Microsoft had very little influence on the rest of the organization and them working with us was not generally viewed as a good thing, and the fact that we were still seeing less production interest of PHP, over the following five years status quo kicked in again and Windows support kept on deteriorating.

Two things have changed since then. First of all, Microsoft seems to have now more broadly understood that being the best platform to run any workload whether it’s their recommended offering or 3rd party offerings is a good thing for the Windows Server business; so folks like the ones we had worked with in 2001 can now finally come out of the closet. On our side, PHP’s market penetration has significantly changed since 2001. PHP is not only a mainstream technology in the broad sense but has been adopted by a large number of traditional Enterprises. As a result, the demand for production quality PHP on Windows has also significantly risen.

For these reasons today’s announcement is truly significant. Not only have we at Zend done a significant amount of work on profiling, testing and improving the PHP runtime itself to make Windows a 1st class citizen for PHP but with the announcement of Microsoft’s FastCGI extension for IIS6 (Windows Server 2003) PHP on Windows is now ready to go into production. As part of the benchmarking work we have done over the past year we have also tested several applications in our labs (including XOOPS and Qdig) both on Linux and on Windows and have verified a comparable level of stability and performance of PHP on Windows.

What next?
- While Microsoft’s FastCGI for IIS6 (Windows Server 2003) is a free download, Microsoft will make life even easier for Windows Server 2008 customers by bundling FastCGI support directly into the operating system. The fact that PHP has influenced the Windows Sever 2008 product roadmap approx. 1.5 years before its final release is a great testament that Microsoft is serious about making Windows Server a good host OS for PHP.
- Zend will continue to monitor and enhance PHP’s performance and reliability on Windows. Any modifications to the PHP source code as part of that effort will continue to be contributed to the PHP project.
- Zend’s production products support the Windows Server operating systems. Today Zend Core & Zend Platform together already offer performance, scalability and monitoring for business-critical applications hosted on Windows.
- Microsoft at our recent conference announced a technology preview of a new SQL Server Driver for PHP which is another step in making PHP interoperate with the Windows platform (I encourage Microsoft to also extend this support to SQL Server interoperability from PHP hosted on non-Windows servers)

Microsoft gets it right:
PHP is one of the most important driving forces behind the modern Web. Not only is PHP running some of the most scalable Web sites like Facebook and Yahoo!, but as more organizations move their applications into the browser it is one of the leading technologies being adopted for that purpose due to its ease-of-use, strong community and scalability.
Trying to force PHP into a vendor’s technology stack like some of the Java EE vendors are trying to do with PHP, would lead to the loss of the productivity and community benefits that PHP delivers. While I have no doubt that Microsoft continues to be commited to its own .Net based product strategy, I think they are doing the right thing by investing in making PHP run well and interoperate with their product portfolio.