PHP-Beschleuniger

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

PHP-Beschleuniger sind Programme, welche die Ausführgeschwindigkeit von PHP-Skripten beschleunigen sollen. Die Basis solcher Beschleuniger bildet meist ein Bytecode-Cache im Zusammenspiel mit einem Optimierer. Seit Version 5.5 verwendet PHP den Zend Optimizer+ als nativen Beschleuniger.[1]

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

Ein PHP-Skript wird zuerst in einen Bytecode übersetzt, bevor es ausgeführt wird. Somit wäre es notwendig, diesen bei jedem Aufruf neu zu generieren. Durch die Verwendung eines Bytecode-Caches entfällt die ständig neue Generierung, da der Bytecode nur einmal generiert und dann zwischengespeichert wird. Zusätzlich können PHP-Beschleuniger Optimierungen am generierten Bytecode vornehmen, sodass die Ausführung nochmals beschleunigt wird.[2]

Geschichte[Bearbeiten | Quelltext bearbeiten]

Bis zur Version 5.5 hatte PHP keinen integrierten Bytecode-Cache, sodass es nötig war PHP-Skripte bei jedem Aufruf neu zu übersetzen, was zu einer zusätzlichen Serverlast führte. Um das ständige neu Übersetzen zu verhindern, wurden externe Bytecode-Caches als Erweiterungen entwickelt, welche diese Funktion nachrüsten sollten. Der Einsatz einer solchen Erweiterung führte zwar zu einer Steigerung der Ausführgeschwindigkeit, brachte aber andere Probleme mit sich. So sorgte beispielsweise ein fehlerhaftes Caching des Alternative PHP Cache im Zusammenspiel mit PHP 5.4 für Schwierigkeiten. Als der vorher kommerzielle Zend Optimizer+ zur Open-Source-Software wurde,[3] gelangte er in die nächstfolgende PHP Version 5.5 als nativer Beschleuniger.[4][5][6][7]

Alternative Beschleuniger[Bearbeiten | Quelltext bearbeiten]

Neben dem Zend Optimizer+ gibt es für PHP noch einige weitere Beschleuniger, welche meist ebenfalls einer freien Lizenz unterliegen.

eAccelerator[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: eAccelerator

eAccelerator ist ein quelloffener Beschleuniger und dient sowohl als Bytecode-Cache als auch als Optimierer. Er speichert den Bytecode im Shared Memory und nimmt Optimierungen zur Laufzeit vor. Die Serverlast bzw. Ausführgeschwindigkeit ist laut den Entwicklern ein bis zehnmal geringer bzw. schneller als der Einsatz ohne einen Beschleuniger.

Alternative PHP Cache[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: Alternative PHP Cache

Der Alternative PHP Cache (kurz APC) ist ebenfalls quelloffen, hat jedoch die Besonderheit eines User Caches. Damit können sowohl einfache Werte als auch komplexe Objekte zwischengespeichert werden. Dies ist beispielsweise vorteilhaft für das vermeiden sich wiederholender Datenbankabfragen und die damit verbundene geringere Last des Datenbankservers. Die Lebensdauer eines Wertes ist einstellbar.

XCache[Bearbeiten | Quelltext bearbeiten]

Hauptartikel: XCache

Ein relativ neuer PHP-Beschleuniger ist XCache, welcher unter Open-Source Lizenz mit dem Fokus auf Sicherheit entwickelt wird. Er speichert den generierten Bytecode im Arbeitsspeicher. Außerdem besitzt er ebenfalls einen User Cache, kann jedoch im Gegensatz zu APC keine Objekte zwischenspeichern.[8]

Sonstige[Bearbeiten | Quelltext bearbeiten]

Weitere Beschleuniger sind bzw. waren:

  • Turck MMCache – der Vorgänger von eAccelerator
  • ionCube PHP Accelerator
  • Nusphere PhpExpress
  • Windows Cache Extension for PHP

Alternative Compiler[Bearbeiten | Quelltext bearbeiten]

Abgesehen von Beschleunigern existieren auch alternative PHP-Compiler wie PHC, HipHop oder Roadsend, welche keine Erweiterung sondern ein eigenständiges Programm darstellen, und den PHP-Code zunächst in C oder C++ Quelltext übersetzen, woraus dann Maschinensprache erzeugt wird. Durch den Einsatz kann die Serverlast und der Speicherverbrauch ebenfalls reduziert werden, in der Regel mehr als mit einem Bytecode-Cache.[9]

Der Nachteil von alternativen PHP-Compilern ist jedoch, dass nicht der gesamte Sprachumfang unterstützt wird, da es sich dabei um eine eigene Implementierung der Scriptsprache handelt. Dem hingegen verwenden andere Technologien von Grund auf einen Maschinencode-Compiler, so zum Beispiel die Node.js-Plattform, welche den ausgehenden JavaScript-Code mittels der integrierten V8-Engine im Just-in-time-Verfahren in nativen Maschinencode übersetzt. Da es sich um keine eigenständige Implementierung handelt, ist hierbei auch der gesamte Sprachumfang von JavaScript verfügbar, obwohl der Quellcode der eigentlichen Scriptsprache zu optimiertem Zielcode kompiliert wurde.[10]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Alexander Neumann: PHP 5.5 mit Bytecode-Cache Zend Optimizer+ erschienen. In: heise Developer. 21. Juni 2013, abgerufen am 22. Mai 2016.
  2. Michael Walter: Voll Karacho. PHP-Beschleuniger im Vergleich. In: Linux-Magazin. Computec Media GmbH, April 2005, abgerufen am 22. Mai 2016.
  3. Jens Ihlenfeld: PHP: Zend Optimizer+ ist jetzt Open Source. In: golem.de. 13. Februar 2013, abgerufen am 22. Mai 2016.
  4. PHP 5.5.0 released. In: php.net. The PHP Group, 20. Juni 2013, abgerufen am 22. Mai 2016 (englisch).
  5. Jens Ihlenfeld: Opcode-Cache: Zend Optimizer+ wird in PHP 5.5 integriert. In: golem.de. 8. März 2013, abgerufen am 22. Mai 2016.
  6. Alexander Neumann: Zend Optimizer+ landet in PHP 5.5. In: heise Developer. Heise Medien, 11. März 2013, abgerufen am 22. Mai 2016.
  7. Eric Herrmann: Zend Optimizer Plus wird Teil von PHP 5.5. In: entwickler.de. Software & Support Media GmbH, 8. März 2013, abgerufen am 22. Mai 2016.
  8. XcacheApi. In: xcache.lighttpd.net. 3. September 2013, abgerufen am 22. Mai 2016 (englisch).
  9. Jens Ihlenfeld: HipHop - Facebook beschleunigt PHP. In: golem.de. 3. Februar 2010, abgerufen am 22. Mai 2016.
  10. PHP oder Node.js? – Vorteile und Nachteile | NodeCode. In: NodeCode. 8. Mai 2014, abgerufen am 22. Mai 2016.