PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


HipHop für PHP

with 7 comments

Gestern war nun der große erhoffte Tag, Facebook wollte seinen neuen “PHP-Compiler” veröffentlichen. Bis jetzt ist das noch nicht passiert, allerdings gab es ein offizielles Announcement und einen Videostream, in dem Näheres erläutert wurde.

Edit: Auf GitHub findet man mittlerweile den Sourcecode.

Hier ein paar erste Fakten, so wie ich sie bisher gelesen habe:

  • “HipHop for PHP” übersetzt PHP-Code in C++ Code
  • Danach kann es mittels g++ kompiliert werden und man erhält eine ausführbare Datei
  • Diese Datei enthält auch direkt einen Webserver (basiert auf Libevent) und eine CLI-Schnittstelle. Um sein Projekt vom Internet verfügbar zu machen muss man nur seinen Apache/Lighty/Squid/etc umleiten (Reverse Proxy) auf diesen kleinen Miniwebserver, so kann man dann mehrere Projekte auf einem Port (80) laufen lassen.
  • Beim Übersetzen und Kompilieren wird der Code durch statische Analysen etc. optimiert, und z.B. der beste C++-Datentyp gewählt (PHP ist lose typisiert, C++ streng)
  • Es soll einen Just-In-Time-Compiler geben (HPHPi), mit dem man seine Anwendung testen kann, ohne sie jedes Mal zu übersetzen und zu kompilieren, denn das kann unter Umständen länger dauern.
  • Bei Facebook läuft das ganze seit einigen Monaten produktiv, man spart damit ca. 50% CPU-Last ein
  • Derzeit unterstützt es PHP 5.2 Code, PHP 5.3 wird noch nicht unterstützt. eval() kann nicht genutzt werden.

Facebook, die zweitgrößte Website der Welt, setzt “HipHop for PHP” nun seit einigen Monaten produktiv ein, 90% des Traffics wird bereits damit abgewickelt, und es läuft wohl stabil. 300.000 Codezeilen und 5000 Unittests sollen es sein, und es wird wohl bald auf GitHub veröffentlicht, aktuell nur für Linux-Systeme (da Facebook auf Linux setzt), aber Windows könnte bald folgen wenn der Open-Source-Code erweitert wird.

Gerade für Firmen könnte das interessant sein, wenn man ein Drittel oder gar die Hälfte seiner PHP-Maschinen einsparen kann, ich bin sehr gespannt.

PHP-Extensions müssen neu geschrieben werden in C++. Wir werden also vielleicht eine zweigeteilte Welt bekommen, HipHop-kompatibler Code und “native PHP Code”. Wie kompatibel ist das ganze mit bestehendem Code, wie kann man dann debuggen, wie sieht dann der Deployment-Prozess aus, wie groß ist der CPU- und Memory-Performance-Vorteil gegenüber APC/XCache wirklich? Wieviele “unserer normalen Projekte” sind CPU-beschränkt und nicht IO-beschränkt?

Interessant ist das ganze auch für Projekte, die dann eine kompilierte Version ausliefern können, das Deployment könnte sich auch auf eine Übersetzung, Kompilierung und dann Kopie einer Datei beschränken? Wir werden sehen…

Ich hoffe, dass wir in den nächsten Stunden und Tagen da mehr Informationen erhalten und der Sourcecode veröffentlicht wird. Es sind jedenfalls spannende Tage, die die Zukunft von PHP verändern könnten.

Written by Michael Kliewe

Februar 3rd, 2010 at 9:12 am

Posted in PHP

Tagged with , ,

7 Responses to 'HipHop für PHP'

Subscribe to comments with RSS or TrackBack to 'HipHop für PHP'.

  1. Ich glaube der Erfolg hängt ein bisschen auch davon ab, wie die PHP Entwicklung in den zukünftigen Versionen auf diese Änderung eingeht… ich bin ebenfalls gespannt!

    Rudi

    3 Feb 10 at 09:48

  2. Bestimmt eine interessante Sache für spezielle Anwendungen.
    Aber sowas kenne ich noch aus der Java Welt und dort hatte das ganze keinen großen Erfolg. Man nahm dann hin, dass “normales” Java eben etwas langsamer war, konnte sich aber dafür diverse (komplexe und aufwändige) Schritte mit compile & run sparen und war so wieder unabhängig von der Platform.
    Naja, “HipHop muss beobachtet werden” und ich halte es mal im Blickfeld, was daraus wird.
    Danke für den informativen Artikel :)

    Sascha Presnac

    3 Feb 10 at 10:34

  3. Ich denke der interessanteste Aspekt ist in der Tat die “Verschlüsselung” von kommerziellen Anwendungen für den Endkunden. Wenn das ganze dann noch performanter ist, um so besser…
    Wenn die Integration eines HipHop-Programmes entsprechend einfach in einen laufenden Webserver möglich ist, könnte das entsprechend schnell eine Alternative zum ZendGuard, oder ionCube werden.

    Sebastian

    3 Feb 10 at 13:56

  4. it-republik.de berichtet, dass es bereits ein ähnliches Projekt namens Roadsend PHP gibt, leider ohne darauf einzugehen, worin genau die Unterschiede liegen. Ich glaube aber gelesen zu haben, dass Roadsend auch per FCGI betrieben werden kann und man somit auf einen Stand Alone Server verzichten kann.

    Chris

    3 Feb 10 at 20:04

  5. Ein sehr ausführlicher Artikel mit vielen Hintergrund-Informationen: (englisch) http://terrychay.com/article/hiphop-for-faster-php.shtml

    Michael Kliewe

    4 Feb 10 at 09:49

  6. Ich kann mich bisher für HipHop nicht sonderlich begeistern. Grund ist ganz einfach der, dass die Vorteile von PHP damit entfernt werden. Der C++ Code ist nicht mehr so plattformunabhängig wie das PHP Pendant. Natürlich kann man auch in PHP plattformabhängigen Code schreiben, aber das ist (zumindest bei mir) eher eine Ausnahme. Momentan haben wir in der PHP Welt einen extrem einfachen Deployment Prozess. Man kann im allerschlimmsten Fall sogar mal eben einzelne Dateien im Livebetrieb austauschen. Mit einem solchen Kompilat wird das wohl eher nicht möglich sein.
    Ob man so einen riesigen Geschwindigkeitsvorteil erzielt ist auch noch nicht gesagt. BTW, warum lagert man rechenintensive Teile nicht in eine Extension aus?

    Grüße

    Norbert

    5 Feb 10 at 07:35

  7. Das ist wohl auch einer der Gründe, die HipHop nur für Firmen und große Webseiten interessant macht, denn Privatanwender wollen nicht diesen ganzen Kompilierungsoverhead. Firmen haben einen Deployprozess, da ist es eh verboten an “Dateien im Livebetrieb” zu arbeiten.

    Irgendwer hat gestern geschrieben, dass vermutlich nur 2% der PHP-Entwickler HipHop nutzen werden, es wird also keine Weltrevolution.
    Es ist auch wichtig zu erwähnen, dass man HipHop nur einsetzen sollten, NACHDEM man alle Performanceprobleme in seinem Code beseitigt hat (Profiling) und dann immernoch an die CPU-Grenze stößt. Wenn sich zB herausstellt, dass die Datenbank oder die Festplatte das Problem ist, hilft HipHop nicht.

    Michael Kliewe

    5 Feb 10 at 10:11

Leave a Reply

You can add images to your comment by clicking here.