Das PHP Script Verzeichnis
Werbung

PHP kommt mittlerweile auf einem Großteil der Webseiten zum Einsatz, ist vielseitig, aber als Interpretersprache nicht sehr performant und kann den eigenen Server stark belasten und die eigene Webseite merklich verlangsamen.

Mit Hilfe des sogenannten ByteCode- Caches lässt sich diese Problematik entschärfen und PHP- Code wesentlich performanter ausführen. Erfahren Sie in diesem Artikel, wie Sie die Vorteile von ByteCode Caches auf Ihrer Webseite nutzen, und für einen deutlich beschleunigten Aufbau von PHP- Webseiten sorgen:

Langsames Interpreter-PHP

PHP ist eine Interpretersprache (umgangssprachlich oft „Skriptsprache“). Das heißt, dass der Quellcode an sich vorliegt und direkt zur Ausführung kommt. Bei jeder Ausführung muss der Interpreter den Quellcode in Maschinencode umwandeln und zur Ausführung bringen. Compilersprachen haben zum Vergleich den Vorteil, nur einmal kompiliert zu werden und danach direkt in ausführbarem Maschinencode vorzuliegen (sog. Binaries), der Vorgang des Umwandelns in Maschinencode bei jeder Ausführung fällt also weg. Das Kompilieren von Quellcode in Maschinencode ist vergleichsweise aufwändig und fällt insbesondere bei viel besuchten Webseiten auf, bei jedem Aufruf der Webseite wird der Quellcode neu eingelesen und übersetzt. PHP-Code wird nach der Ausführung als HTML-Code im Browser angezeigt, die dynamischen Inhalte einer Webseite werden durch den PHP-Code generiert. Ein einfaches Caching der erstellten HTML-Webseiten ist demnach nicht praktikabel, weil die dynamischen Inhalte, das was PHP so beliebt macht, wegfallen.

Was ist ByteCode Cache und wie funktioniert er?

Abhilfe verspricht hier die Verwendung eines ByteCode Caches. ByteCode Caches sind PHP-Extensions, die direkt auf dem Webserver installiert und aktiviert werden müssen (SSH-Zugang erforderlich). Der erste Schritt des Übersetzens eines PHP-Quelltextes in Maschinencode ist das Erstellen eines zusammenhängenden Codes aus allen inkludierten und angegebenen PHP-Dateien, Anmerkungen und verwendeten Funktionen. Dieser Übergang von von Menschen lesbarem Code in für Maschinen lesbaren Quellcode (semantische Lücke) ist sehr aufwändig. Dieser Schritt wird vom Interpreter jedes Mal durchgeführt, obwohl er sich nur bei der Veränderung von PHP-Dateien ändert.  Genau hier setzen ByteCode Caches wie XCache, eAccelerator und APC an. ByteCode Caches speichern nach einmaliger Ausführung diesen Übergangscode und unterbinden bei weiteren Aufrufen die erneute Berechnung des Übergangscodes und nutzen das gespeicherte Pendant, dabei sind sie klein und flexibel auf jeglichen Servern mit Root-Rechten einzurichten. Dadurch wird viel Rechenleistung und -zeit eingespart. Die Struktur des ByteCode Caches sorgt für Ressourceneinsparung und Performance:  Viel genutzte PHP-Codes werden im Arbeitsspeicher abgespeichert, weniger oft angeforderte auf der Festplatte. Die Dynamik der PHP-Dateien bleibt erhalten und bei Änderungen wird der Cache neu erstellt, so bleibt die Webseite stets aktuell.

Risiken und Nutzung

ByteCode Caches weisen oftmals noch Kinderkrankheiten auf, die auf den ersten Blick nicht reproduzierbare Fehler oder sporadisch einfach weiße Seiten entstehen lassen. Weiterhin arbeitet keiner der ByteCode Caches zuverlässig mit dem ZendOptimizer oder ionCube zusammen, von einer parallelen Nutzung ist daher unbedingt abzuraten. ByteCode Caches können einen erheblichen Geschwindigkeitsschub bringen, aber auch Probleme verursachen, Sachkenntnisse sind daher für die Verwendung eines ByteCode Caches unbedingt zu empfehlen.