Und so besuchten wir Steve Kamerman (ScientiaMobile) in seinem Vortrag zu High-Performance PHP with HipHop, wo er den Gästen der International PHP Conference zeigt, wie Facebooks alternative PHP-Laufzeitumgebung entstanden ist, was ihre Kniffe sind und was und man in Zukunft von ihr erwarten kann.
Zunächst aber der historische Rückgriff: Facebook hatte schon im Jahr 2008 Hundert Millionen aktive Nutzer, die für die verwendeten Server Skalierungsprobleme darstellten. Und so begann man, nach einem Flaschenhals zu suchen und sah, dass PHP einen Teil seiner Leistung im Parser und Interpreter verliert. Architektonische und syntaktische Entscheidungen, die damals für PHP getroffen wurden, wie etwa dynamische Typen, helfen zwar bei der schnellen Programmierung, kosten bei der Ausführung aber mitunter viel Zeit. An solchen Stellen hat man mit HipHop angesetzt. In der ersten Iteration hieß das Tool hPHPc, später entwickelte man die HHVM.
Letztere ist ein multithreaded Server mit integrierter PHP-Laufzeitumgebung. Im Gegensatz zu hPHPc ist HHVM eine Virtual Machine mit JIT-Compiler. Vor dem Release der VM standen zwischen PHP und HipHop lange Kompilationsphasen, was Deployment im Bytecode mühselig machte. Die HHVM überspringt nun dieses Problem. Ein weiteres Gimmick ist, dass die HHVM den Bytecode vorhält, auch wenn der Server neustartet. Dieser Cache reduziert mit der Laufzeit den Rechenaufwand und steigert allmählich die Leistung. Er muss jedoch manuell gelöscht werden, da er davon ausgeht, dass sich im PHP-Code nichts geändert hat.
Nun, die HHVM ist schon schnell und einfacher zu deployen. Wo ist also der Haken? Tja, die HHVM ist nicht komplett sprachkompatibel mit PHP, sodass man den Code seiner App nach wie vor anpassen muss. Insbesonderer Type Inference sorgt für Errors, sodass PHPs laxer Umgang mit Typen umschifft werden muss. Auch dynamische Konstanten sind ein weiterer Stolperstein für den JIT-Compiler. Aber daran wollen viele arbeiten – nicht nur Facebook.
HipHop ist nah angelehnt an PHP 5.4. Es gibt außerdem zahlreiche Erweiterungen dafür. Das derzeitige Ziel ist, existierende PHP-Projekte wie Drupal in der HHVM ausführen zu können. Derzeit strudeln täglich rund 60 Commits im öffentlichen GitHub Repository ein. Das Projekt steht unter PHP-Lizenz, was Kamerman großes Vertrauen in das Projekt gibt.
Während in den derzeitigen Versionen die Einrichtung de eigenen Systems für die HHVM noch recht kompliziert ausfällt, empfiehlt der Speaker für den schnellen Geschwindigkeitsboost PHP 5.5 mit seinem Opcache. Denn schon dort hat er massive Schübe beobachten können, während man im Code viel weniger Anpassungen vornehmen muss. Wer also auf Nummer sicher gehen will, der lässt in seinem Produktivsystem noch die Finger von der HHVM.
Wer mehr Details aus dem Vortrag erfahren möchte, dem werden diese und viele weitere Session-Aufzeichnungen schon bald zur Verfügung gestellt werden.
Verpasst auch nicht das Interview, das wir im Anschluss mit Steve Kamerman geführt haben.