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. Diese 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]

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]

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]

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

eAccelerator[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]

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]

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]

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]

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 optimierten Zielcode kompiliert wurde.[10]

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. http://www.heise.de/developer/meldung/PHP-5-5-mit-Bytecode-Cache-Zend-Optimizer-erschienen-1894188.html
  2. http://www.linux-magazin.de/Ausgaben/2005/05/Voll-Karacho
  3. http://www.golem.de/news/php-zend-optimizer-ist-jetzt-open-source-1302-97574.html
  4. http://php.net/archive/2013.php#id2013-06-20-1
  5. http://www.golem.de/news/opcode-cache-zend-optimizer-wird-in-php-5-5-integriert-1303-98069.html
  6. http://www.heise.de/developer/meldung/Zend-Optimizer-landet-in-PHP-5-5-1820029.html
  7. http://phpmagazin.de/Zend-Optimizer-Plus-wird-Teil-von-PHP-5.5-066831.html
  8. http://xcache.lighttpd.net/wiki/XcacheApi
  9. http://www.golem.de/1002/72842.html
  10. http://nodecode.de/php-oder-nodejs