PHP 7.0 – auf Performance ausgelegt

Alle goneo Kunden mit einem Tarif, der das Feature PHP enthält, können seit Anfang Januar PHP 7.0  einsetzen.
Im Vergleich zu den Vorversionen gibt es im Code von PHP 7 etwa 10.000 Änderungen. Viele hatten das Ziel, die Geschwindigkeit zu verbessern. Große Anwender, die große Entwicklungsabteilungen betreiben und auf PHP setzen, wünschten sich mehr Performance.

Konkurrenz gewachsen

Aus dieser Motivation heraus ist zum Beispiel Facebook den Weg gegangen, anders mit PHP Code umzugehen, bevor er ausgeführt wird. Bei PHP wurde der Code bisher immer interpretiert, in sogenannten Opcode übersetzt, dann von einer virtuellen Maschine ausgeführt. Facebook hat mit seiner HipHop Virtual Engine (HHVE) statt dessen den PHP Code in einen Bytecode übersetzt, der dann dynamisch in Maschinencode compiliert und in dieser Form ausgeführt wird. Es ist also ein Konkurrenzprinzip entstanden, das schneller war. Das hat die PHP-Macher herausgefordert.

PHP 7 verarbeitet viel mehr Anfragen pro Sekunde

Schon im August 2015 haben die Macher von PHP anhand eines frühen Release Candidates einige Benchmarks gezeigt, die eindrucksvolle Leistungssteigerungen demonstrierten. Diese Test bezogen sich auf die Anzahl der Anfragen pro Sekunde. Die neue Version konnte bei der Ausführung von WordPress 4.1 im Vergleich zu PHP 5.6 doppelt so viele Request pro Sekunde verarbeiten. So ist das auch in einigen Publikationen dokumentiert. Bemerkenswert ist dabei, dass PHP 7 nun in die Leistungsbereiche vordringt, die man bei Facebooks HHVE sah.
In diesen Benchmarks sind die Anzahl der erreichbaren PHP-Requests pro Sekunde verglichen worden. Lohnt es sich also, um die Ladezeit der gesamten Webseite zu minimieren, jetzt PHP 7.0 einzusetzen?

Stichprobentest

Ein kleiner punktueller Test, vier Stichproben, mit einem Testblog und einer externen Messung auf webpagetest.org mit Messpunkt Frankfurt am Main zeigt wenige Unterschiede. Test 1 und 2 lief mit PHP 5.6, Test 3 und 4 mit PHP 7.0 ohne weitere Optimierungen oder Veränderungen der Webseite. Gemessen wurde nacheinander mit etwa zehn Minuten zeitlichem Abstand

Version Lade-
Zeit
First Byte Start Render Zeit bis visuell komplett Zeit bis Dokument komplett geladen
PHP 5.6 2.232s 0.314s 2.092s 2.232s 2.332s
PHP 5.6 2.673s 1.003s 3.080s 2.673s 3.055s
PHP 7.0 1.797s 0.268s 0.492s 1.797s 2.166s
PHP 7.0 2.344s 0.325s 2.195s 2.344s 2.439s

Dieser Stichprobentest zeigt also im Falle von WordPress keine großen Unterschiede, allerdings ist das Testblog auch sehr schlank. Beim Seitenaufruf werden auch nur 350 kB geladen. Andere Faktoren wie die Tageszeit beeinflussen also die Performance offensichtlich viel stärker als die eingesetzte PHP-Version.

Beeinflussung durch andere Faktoren stärker

Wenn sich also auch die Anzahl der maximalen PHP-Requests mit PHP 7 theoretisch verdoppeln lässt, so sind dennoch viele andere Faktoren an der Ladezeit beteiligt, die ja letztendlich die Erfahrung, die der User mit der Webseite beim Seitenaufruf per Browser macht, bestimmt.
Im Normalfall wird man viel mehr Plugins integriert haben, einige davon sind möglicherweise nicht PHP 7 – kompatibel. In diesem Stichprobentest war zudem PHP 5.6 als Modul eingebunden, PHP 7.0 wird über Fast CGI angesprochen. Das verzerrt den Test auch. Mit Drupal könnte der Test wieder anders ausfallen, da möglicherweise mehr Requests verarbeitet werden müssen und sich so die Verarbeitungskapazität stärker in der Ladezeit widerspiegelt.

Begrenzt abwärtskompatibel

An der Nichtkompatibilität einiger Plugins erkennt man, dass PHP 7.0  nicht nur ein Performance Update ist. Auch einige Elemente der Sprache wurden verändert oder neu eingeführt. Daher sind längst nicht alle  Open Source Anwendungen mit PHP 7.0 zu betreiben. Bei goneo lässt sich das recht einfach ausprobieren. Man muss im Kundencenter einfach nur die Version umschalten. Wenn 7.0 nicht möglich ist, ist ein einfaches Zurückschalten auf 5.6 kein Problem. Aus Kompatibilitätsgründen kann der Webserver auch mit PHP 5.3 betrieben werden.
Allerdings sollte man beim Testen etwas vorsichtig sein: Frontend und Backend der Anwendung verhalten sich manchmal unterschiedlich. Wenn das Frontend mit PHP 7.0 gut läuft, muss das nicht für das Backend gelten. Außerdem kann sich die integrierte Updateroutine vielleicht verschlucken. Man sollte also zuerst die Anwendung auf den aktuellsten Stand bringen, alles testen, dann erst die Version umschalten und wieder alles testen. Natürlich macht man vor Manipulationen wie einem Update der Anwendung ein vollständiges Backup. Fehlende Backups haben schon zu viel Frust und Tränen geführt.

Die Zeit nach PHP 5

Klar ist: PHP 5 ist ein Auslaufmodell. Es wird noch Sicherheitsupdates und Patches geben. Als Termin für End of Life wird der Dezember 2018 genannt.  Eine weitere Unterversion nach 5.6 soll es nicht mehr geben. Übrigens wird es auch kein „PHP 6“ geben. Diese Versionsbezeichnung wurde einst im Vorfeld und auch noch in der Entwicklungsphase verwendet, um damit die neu eingeführte, wichtige Unicode-Unterstützung von PHP zu unterstreichen. Doch Neuerungen, die für Version 6 vorgesehen waren, flossen schon in Versionen der Serie 5 ein.
Wenn Sie eine Webseite betreiben, die mit einer Open Source Anwendung wie Joomla aufgesetzt ist, werden die folgenden Updates die Kompatibilität zu PHP 7.0 bald herstellen. Nach und nach dürften dann auch Erweiterungen und Templates folgen. Diesen Pfad mitzugehen ist absolut empfehlenswert, da man davon ausgehen muss, dass neue Entwicklungen auf PHP 7 setzen und 5.6 zunehmend weniger unterstützt wird.

Eine Antwort auf „PHP 7.0 – auf Performance ausgelegt“

  1. Hallo und vielen Dank für den sehr interessanten Beitrag. Ich muss noch schauen, ob ich alle meine WordPress-Blogs auf PHP 7.0.4 umschalte, was ich meistens im Account meines Webhosters machen kann.
    Drupal und Joomla setze ich auch ein und da lasse ich mir noch etwas Zeit, bis da was passieren wird. Es ist sehr erfreulich zu hören, dass so viele Änderungen in die neue PHP-Version miteingeflossen sind und der Nutzer sich wohler fühlen darf.
    Bis Dezember 2018 ist noch allerhand Zeit und bis dahin oder danach kann man mal schauen, wie die OpenSource Software, die ich einsetze, mit PHP 7.0 klar kommen wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert