PHP7

22/07/2015 - 23:10 von Stefan+Usenet | Report spam
Aus Neugierde habe ich mir heute PHP7 auf einen frisch installierten
Debian/Jessie-Rechner gespielt und ein paar Tests damit
durchgeführt. Von der Kompatibilitàt her kein Problem (wie
eigentlich) zu erwarten, bloss der globale Exception-Handler möchte
jetzt gerne ein Argument vom Typ Error (und braucht demnàchst auch
noch die entsprechend Erweiterung beim Funktionsumfang).

Irritierend allerdings: lasse ich irgendwelche sinnlosen
Trivialprogramme auf der CLI laufen, also etwas in der Art von:

#v+
$ php -r '$a=microtime(true); for($i=0;$i<1000000;$i++) { $x = substr((string)sin($i),$i%7,9); } echo microtime(true)-$a;'
#v-

...dann ist das wie erhofft (mehr als) doppelt so schnell, wie auf
der alten Hardware.

Nehme ich jedoch eine meiner Applikationen zum Testen, bricht die
Geschwindigkeit um einen Faktor 10(!) ein, und zwar durch die Bank
von trivialen bis hin zu hochkomplexen Seiten. Die Datenbank ist
jedenfalls nicht schuld daran (dafür habe ich eigene
Timing-Routinen), der ganze Rest ist dann aber reines PHP.

Nun hàtte ich gerne gewusst, weshalb - so eine Größenordnung kann ja
eigentlich nur aus einem Kapitalverbrechen resultieren.
Hauptspeicher und dessen Konfiguration sind auf beiden Maschinen
leich, die CPUs nahezu gleich, die durchschnittliche Last ist am
PHP7-Server sogar deutlich geringer, die php.ini wurde vom
Produktivserver 1:1 kopiert, die Apache-Konfiguration ist ident
(allerdings mit einem Versionssprung von 2.2 auf 2.4 wegen Jessie).
Mehr mögliche Baustellen fallen mir im Moment nicht ein.

Leider gibt es für PHP7 noch kein xdebug, damit ließe sich eventuell
etwas herausfinden. Hat jemand Vorschlàge? Irgendwelche
Debugging-Schalter, die man deaktivieren müsste (ich hàtte
allerdings nichts gefunden, was an entsprechendem Output geschrieben
worden wàre)?

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
 

Lesen sie die antworten

#1 Christoph M. Becker
23/07/2015 - 00:04 | Warnen spam
Stefan Froehlich schrieb:

Aus Neugierde habe ich mir heute PHP7 auf einen frisch installierten
Debian/Jessie-Rechner gespielt und ein paar Tests damit
durchgeführt. Von der Kompatibilitàt her kein Problem (wie
eigentlich) zu erwarten, bloss der globale Exception-Handler möchte
jetzt gerne ein Argument vom Typ Error (und braucht demnàchst auch
noch die entsprechend Erweiterung beim Funktionsumfang).



Nicht unbedingt `Error`, sondern eher `Throwable`, siehe
<https://wiki.php.net/rfc/throwable-interface>.

Nehme ich jedoch eine meiner Applikationen zum Testen, bricht die
Geschwindigkeit um einen Faktor 10(!) ein, und zwar durch die Bank
von trivialen bis hin zu hochkomplexen Seiten. Die Datenbank ist
jedenfalls nicht schuld daran (dafür habe ich eigene
Timing-Routinen), der ganze Rest ist dann aber reines PHP.



Uh, Faktor 10 klingt gar nicht gut. Ich selbst habe die Performance
bisher weitgehend ignoriert, da ich das Thema für etwas überbewertet
halte (bin mit recht aktuellen 5.x eigentlich schon recht zufrieden),
aber bei meinen bisherigen Tests ist mir zumindest keine
Verschlechterung aufgefallen.

Leider gibt es für PHP7 noch kein xdebug, damit ließe sich eventuell
etwas herausfinden. Hat jemand Vorschlàge? Irgendwelche
Debugging-Schalter, die man deaktivieren müsste (ich hàtte
allerdings nichts gefunden, was an entsprechendem Output geschrieben
worden wàre)?



Dass Xdebug noch nicht PHP7 kompatibel wusste ich noch nicht, aber ist
offensichtlich so (<http://bugs.xdebug.org/view.php?id47>) – schade.

Ansonsten fàllt mir spontan nicht viel ein, außer dass ich mal den
OPcache überprüfen würde. Den gibt es unter PHP 5.4 (soweit ich weiß
Deine Produktivversion) ja noch nicht, aber eben unter PHP 7, wo er auch
per Default aktiv sein müsste. Eigentlich sollte der ja für eine
Beschleunigung sorgen, aber bis er warm làuft oder bei ungünstiger
Konfiguration kann das vielleicht auch nach hinten los gehen.

Christoph M. Becker

Ähnliche fragen