This post is also available on blog.syntaxc4.net.
Today is an exciting day as we welcome the availability of PHP 5.5.0 [Release Announcement]. The team here at Microsoft has been busy preparing PHP 5.5.0 for Windows which has a number of updates which I will cover in this post.
With the release of PHP 5.5.0, the PHP Community has also announced that PHP 5.3 will go into “Security Only” maintenance, which will last for a period of 1 Year, at which time PHP 5.3 will enter End of Life (EOL).
What’s New in PHP 5.5.0
The most notable change to PHP 5.5.0 is the inclusion of Opcache extension which is to be bundled into the language. There are a number of other enhancements including:
Language Bundled Opcache Extension
As anyone who develops PHP code knows, an opcode is important to speed up the execution of the script. This is done by caching compiled interpreted PHP code, so that the compiler doesn’t need to be used on each request. If a compiled version of the requested script is cached, the compiler is bypassed and sent directly to the executor. The Opcache extension was contributed by Zend, and is based on their Optimizer+ extension.
Good news for those running PHP on Windows is that Opcache is supported on Windows and performs quite well over the current version of WinCache. You can see some performance numbers below with the new Opcache support in PHP 5.5.0.
What’s New in PHP on Windows
Over the past several years, Microsoft has been heavily investing in PHP on Windows working towards better support for PHP in IIS. In recent years, additional work to ensure that PHP not only work on Windows Azure, but to ensure that PHP is a first class citizen on the platform.
Microsoft Contributors to PHP
Microsoft has two contributors to the PHP project who are within the top 10 committers within the last 12 months. Pierre Joye, one of the two contributors mentioned above, has the most all time contributions to the project with over 6000 commits according to Ohloh.net.
There is a great deal of collaboration between the PHP community and the Microsoft Open Source Technology Center (OSTC) (which is responsible for Q&A and PHP builds for Windows) in order to ensuring extensions are updated amongst other works.
Performance Improvement for PHP on Windows
There have been some major improvements surrounding performance of PHP on Windows. The improvements include moving to the VC11 compiler as well as the new Opcache extension explained above.
Moving PHP Core and Extensions to VC11
There have been a number of improvements which have come out of moving the PHP source and dependencies to be compiled under the latest VC11 compiler. Taking advantage of Profile Guided Optimizations (PGOs) which is a runtime compilation optimization which leverages profile data collected by running performance centric usage scenarios to build an optimized version of an application. You can read more information regarding PGO from the C++ Compiler team blog, I would suggest Profile Guided Optimization: Under the hood and Build faster and high performing native applications using PGO. To better understand how the PHP binaries took advantage of PGO, read Speed up Windows PHP Performance using Profile Guided Optimization (PGO).
Looking at the Numbers…
The team is seeing some significant performance numbers captured in the below tables. The following performance metrics were captured from a machine with the following configuration:
CPU – Intel Quad core @ 2.26Ghz (x2) L5520
Memory – 12GB RAM
HD – 147GB SAS RAID 1
NIC – 1Gbps Intel
Windows Server 2012
Note: Performance metrics are in Transactions per Second (TPS)
PHP Performance on IIS
As you can see, there is a range of 7-15% increase in performance over PHP 5.4 with no caching enabled in IIS against some of the industry leading CMS applications. Opcache significantly increases performance over PHP 5.4 with WinCache, anywhere between 25-152% increase in performance on IIS against the same applications.
PHP Performance on Apache 2.4
If you are leveraging Apache 2.4 on Windows, you may see an 8-19% increase in performance over PHP 5.4 with no caching enabled. When testing with Opcache enabled over PHP 5.4 with APC caching in Apache, you may see performance gains of between 12-119% on Apache 2.4.
It’s exciting to see the PHP language continue to grow and evolve as well as the collaboration between the PHP community and Microsoft to continue to advance the support of PHP on Windows and Windows Azure.