PHP7 Umstellung Web Server PHP Blog Beitrag

PHP7 – Start in ein neues Zeitalter

Nach zwei Jahrzehnten steht der Community nun ein Release zur Verfügung, das  neben zahlreichen neuen Features vor allem einen enormen Performance -Schub bietet.

Kein vorheriges PHP Release konnte Anwendungen derart beschleunigen.

PHP7 in den Medien

Bereits vor der Veröffentlichung wurde heiß diskutiert, da die neue Version in wichtigen Kennzahlen für Webanwendungen deutliche Verbesserungen gegenüber PHP5 mitbringt. Es wird von Applikationen berichtet deren PHP-Code zwischen 20 und 50% schneller ausgeführt wird, bei zugleich 30-50% weniger Speicherbedarf. Aufgrund der tiefgreifenden Änderungen der Version 7 haben wir bewusst eine längere Zeit abgewartet sodass die neue PHP Version in diesem Zeitraum eine gewisse Stabilisierung erfahren konnte.

Wir beschäftigen uns seit längerem damit die einzelnen Software-Komponenten auf Kompatibilität mit PHP7 zu prüfen und ggf. nötige Anpassungen vorzunehmen. Dies reicht von unseren fachlichen Komponenten bis hin zu unserem hauseigenen MVC Framework Rocket.

Vorbereitung unserer E-Commerce Lösungen für PHP7

Zeitgleich haben wir uns damit beschäftigt unsere lokale Entwicklungsumgebung auf PHP7 zu aktualisieren. Dabei ist es wichtig dass weiterhin Entwicklungsumgebungen zur Verfügung stehen welche das aktuelle Produktivsystem wiederspiegeln, d.h. wir werden für den Übergangszeitraum pro Entwickler die doppelte Anzahl an Resourcen vorhalten müssen.
Einher mit der neuen PHP7 Version geht eine aktualisierte Plattform. Im Zuge der PHP Aktualisierung wird die Gelegenheit genutzt um die so langsam zum Ende kommende Ubuntu12 LTS Version durch neuere Ubuntu14 LTS Systeme zu ersetzen. Aus organisatorischen Gründen werden wir den Schritt direkt zu Ubuntu16 LTS nicht gehen.

Ubuntu Logo

Aufgrund einiger schlechter Erfahrungen mit der von Ubuntu selbst gepflegten PHP Pakete werden wir zukünftig PHP Pakete installieren die direkt von den PHP Core Entwicklern zur Verfügung gestellt werden.

Aktuell werden manche Anwendungen von Segmentation Fault Problemen verfolgt für die wir selbst keine Lösung bieten können, da die verwendeten Ubuntu Pakete keine entsprechenden Fehlerbehebungen mehr bereitstellen. Dies möchten wir durch den Einsatz von offiziell supporteten PHP Versionen in Zukunft verhindern, auch wenn dies ggf. ein wenig mehr Aufwand für die Pflege der Systeme bedeutet.

Erste Erkenntnisse mit PHP7

Erste Stichproben in der neuen Entwicklungsumgebung einer unserer Mobilfunk-Anwendungen haben gezeigt dass wir mit folgenden Einsparungen rechnen können:

  • ~70% weniger Speicherbedarf
  • ~37% weniger Bedarf an Prozessor-Resourcen
  • ~15% schnelleres Ausliefern einer PHP Anfrage

Wenn sich diese Zahlen auch auf den späteren Produktivsystemen bewahrheiten sollten, stehen einige Vorteile für unsere Kunden als auch den Endbenutzern der Systeme im Raum:

  • Beschleunigter Seitenaufbau (100-200ms) beim Besuch der Webanwendungen
  • Einsparungen für zukünfitige Hardware da die gleiche Anzahl an Besuchern mit weniger Resourcen bedient werden können
    Alternativ: Bei gleicher Serverausstattung können zukünftig mehr Besucher zugleich bedient oder kurzzeitige Lastspitzen besser vom System abgefedert werden
  • Anwendungen deren Business-Logiken sehr aufwändig sind können deutlich schneller ablaufen und dadurch entstehen weniger Wartezeiten für die Benutzer / Sachbearbeiter
  • Es ist zu erwarten dass PHP basierte Cronjobs schneller Daten verarbeiten werden und dabei deutlich weniger Resourcen des Servers beanspruchen

Blick über den Tellerrand: Alternative PHP Implementierungen

Seit geraumer Zeit etabliert sich eine der alternativen PHP Implementierungen, namentlich HHVM (HipHop Virtual Machine) die unter der Federführung von Facebook entwickelt wird.
Versprochen wird eine deutlich effizientere Laufzeitumgebung im Vergleich zum klassischen PHP5.6. Dabei werden gänzlich neue Wege beschritten. Die Implementierung beinhaltet Konzepte wie einen just-in-time Compiler (JIT) welche man sonst nur aus dem Java Umfeld kennt.

Bei näherer Betrachtung sticht dabei ins Auge dass Facebook rund um HHVM ein erweitertes Open-Source Ökosystem entwickelt, welches durch neue Entwicklertools und sogar einer eigenen zusätlichen Programmiersprache auffällt. Je nach Anwendung und Benchmark liefert sich HHVM und PHP7 ein Kopf an Kopf rennen bzgl. der Ausfürhungsgeschwindigkeit und Speicherbedarf.
Die Entwicklung des HHVM Projektes orientierte sich ursprünglich sehr stark am open source Gedanken. Viele Entwickler wurden förmlich eingeladen an dem Projekt mitzuarbeiten und inkompatibilitäten gegenüber dem ursprünglichen Zend PHP zu minimieren. Die Entwicklung des Projektes in den letzten Monaten zeigt den deutlichen Einfluss des Unternehmens aus Sillicon Valley, welche die Ziele und Zügel des Projektes deutlich mitbestimmt.

HHVM HipHop Virtual Machine Just in Time Kompilierung Logo

Wir haben uns gegen den Einsatz von HHVM entschieden. Gründe dafür sind dass einige unserer Entwicklungsprozesse und Werkzeuge noch zu Stark mit der Arbeitsweise von Zend PHP verwoben sind. Hauptargument ist aber der Einluss von Facebook auf das HHVM Projekt. Facebook lenkt das Projekt auf Basis von Annahmen die für unser Kundenklientel nicht zutreffen.

HHVM mag als Ganzes für eine der größten Websites im Internet sehr gut funktionieren, die Anforderungen an die Plattform für unsere Kunden sind aber sehr unterschiedlich. Ausserdem schätzen wir die Transparenz und Unabhängigkeit des Zend PHP Projektes, welches uns bereits über Jahre hinweg als stabile Grundlage für etliche Projekte mit verschiedensten Zielrichtungen dient.

Ein weiterer Grund gegen den Einsatz von HHVM sind die von uns eingesetzten php-extensions. Nicht alle eingesetzten php-extensions sind auch von HHVM unterstützt bzw. kompatibel. Da wir selbst kein Know-How im Themengebiet PHP Extension Entwicklung haben, möchten wir an dieser Stelle keine Abhängigkeit zu Dritten herstellen.

Ausserdem ist der relativ aufwändige Migrationsprozess von Zend PHP zu HHVM für unser Kunden klientel aktuell wirtschaftlich nicht sinnvoll. Zend PHP7 bietet mittlerweile eine vergleichbare Performance mit einem für uns deutlich geringeren Aufwand.