The newly released open-source code transformer converts PHP to C++ and makes large, complex PHP Web sites run much faster.
If ever there were an example of an enterprise-level PHP application, Facebook is it. The social networking super-site serves more than 400 billion PHP-based page views per month, proving beyond question that PHP is suitable for scaling large Web applications—or does it?
Ironically, it may have been around the 300-billion-page-view mark that Facebook developers finally cried uncle. PHP—a scripting language—just couldn't keep up with all the traffic. Well, it could with enough hardware behind it, but scaling Facebook was becoming a challenging undertaking by any account.
Essentially, every page view represented a logged-in user with a custom experience. What is happening in the background when a user views his home page is this: the application looks up all of the person's friends, queries relevant updates, filters results based on privacy settings, and finally completes the user's stories with comments and photos. Facebook does this all in less than a second. This doesn't even take into account other core parts of the site involving the news feed, search engine, chat feature, and other goodies.
Someone out there probably is reading this and thinking, "I bet they were sorry they ever started down the road with PHP! They should have picked a traditional compiled language or at least an interpreted language—not a scripting language."
Actually, Facebook management is not sorry it developed its site with PHP. The simple-to-learn language has given them something that has been a key to their success: speed. A Facebook senior engineer, Haiping Zhao, writing in a company blog, describes how for the past six years PHP has allowed Facebook developers to do far more than they could have accomplished otherwise, thanks to PHP's support of rapid application development. Using PHP has created an environment in which new engineers at the company can ramp up far faster than they could have using a more traditional language. PHP has given Facebook an edge on innovation.
Nevertheless, with 400 billion page views per month, PHP was starting to wheeze. Even on smaller sites, finding new ways to improve PHP performance has been the equivalent of searching for the Holy Grail. It certainly has been job one at Zend Technologies. At runtime, Zend Engine turns PHP source code into opcodes that are then put through the Zend Virtual Machine. Many PHP Web sites use accelerators that cache this output, and Zend Server makes PHP run faster through opcode optimization and caching. Zend Core, which allows PHP to run native on IBM i, fulfills this role.
But Facebook was past the point where such measures would result in significant acceleration. The company started looking at actually compiling PHP source into another language so it could be turned into native machine code. As it turns out, compiling PHP isn't really a new idea. Several open-source projects—such as Roadsend and phc—compile PHP into C, while Quercus compiles PHP into Java—go figure. Phalanger compiles PHP to .NET.
Facebook decided to transform PHP into C++, but to do that, the company had to put on its thinking cap (drum roll, please). Two years later, the result achieved by of some very bright and very determined developers is what is now being called HipHop for PHP. Facebook developers wrote over 300,000 lines of code and did 5,000 unit tests. It took a few years, but today, Facebook is serving more than more than 90 percent of its Web traffic using HipHop. As a result, CPU usage on Facebook servers has dropped by an average of 50 percent, thanks to HipHop.
The company was so pleased with the results it achieved from HiipHop that it decided the Web community at large should benefit. Last month, it released HipHop as open source in the hope of reinforcing the idea that PHP is a great language to build large complex scalable Web sites.
What is HipHop, and how does it work? HipHop apparently is not actually a compiler but a source code transformer. It programmatically transforms PHP source into highly optimized C++. Then, it uses g++ to compile it. HipHop includes a code transformer, a reimplementation of PHP's runtime system, and a rewrite of many common PHP extensions. HipHop also includes a new Web server that is said to simplify Apache Web server and thus help increase performance. The main PHP 5.2 language remains essentially the same, save for a few missing features that Facebook says are rarely used.
Since HipHop allows for the scaling of very large Web sites, it probably won't find much traction in the average SMB Web site. It may be more of an academic novelty than a practical tool that forever changes the face of PHP development. However, it most certainly will change the debate about PHP that today seems to run endlessly in circles: is it or isn't it suitable for large enterprise Web sites? It seems those for it have it locked. Facebook, however, says HipHop is still in beta and will require more work, presumably from them or others in the PHP community. Developers at Zend Technologies currently are evaluating HipHop to see how its technology can be best adapted to the business and developer communities.
Meanwhile, Zend has released the results of a worldwide survey that suggests many more developers soon will acquire Zend Framework certification. Today, only about 5 percent of PHP developers are certified in Zend Framework despite the fact that 70 percent of PHP developers use it for business-critical applications. Parenthetically, some 85 percent have chosen Linux as their primary operating system for PHP applications.
Regardless of where PHP heads this year, it's clear the demand for online training and certification will go nowhere but up, and that is good news for Zend.
Facebook says that HipHop will be available for download through github.com.