Sie befinden sich hier: variomedia.de > Support > Häufige Fragen (FAQ) > Webanwendungen und Datenbanken > PHP

Fragen und Antworten

Wie kann ich PHP mittels OpCache beschleunigen?

PHP ist eine sogenannte Script-Sprache, eine PHP-Anwendung liegt immer im Quelltext vor, den man mit einem beliebigen Texteditor einsehen und bearbeiten kann. Um eine PHP-Anwendung auszuführen, muss sie zunächst vom PHP-Interpreter in für Computer verständliche Mikroprozessorbefehle umgewandelt werden. Der PHP-Interpreter erzeugt aus dem Quelltext jedoch nicht unmittelbar ausführbaren Mikroprozessor-Code, sondern generiert in einem Zwischenschritt zunächst sogenannten Bytecode für eine Virtuelle Maschine (Zend Engine). Diese Virtuelle Maschine stellt eine einheitliche Laufzeitumgebung für unterschiedliche CPU-Architekturen und Betriebssysteme bereit, und soll die Entwicklung von PHP selbst vereinfachen. Die Virtuelle Maschine erzeugt aus den Bytecode dann im nächsten Schritt Mikroprozessor-Code, und führt diesen schließlich aus.

Der Bytecode wird jedoch nach der Ausführung eines PHP-Scripts sofort wieder verworfen, und muss bei jedem folgenden Script-Aufruf zeitaufwändig neu generiert werden. Häufig dauert die Generierung des Bytecodes aus dem PHP-Quelltext ähnlich lang oder sogar länger als die darauf folgende eigentliche Ausführung des Scripts. Um dies zu vermeiden, gibt es PHP-Beschleuniger wie den mittlerweile fest in PHP integrierten OpCache, die den Bytecode optimieren und für spätere Script-Aufrufe speichern. Allerdings wurde dieser Bytecode bis zur PHP-Version 7.0 immer im Arbeitsspeicher abgelegt, was auf unseren Shared-Hosting-Servern aus technischen Gründen nicht möglich ist. Daher konnte OpCache nur von Kunden mit eigenem Webserver (Reseller.Dedicated- bzw. Pro-Paket) und PHP-FPM genutzt werden. Seit PHP Version 7.0 kann OpCache den Bytecode auch in Dateien speichern, damit kann es auf allen Shared-Hosting-Servern genutzt werden.

PHP 7 und OpCache aktivieren

Um PHP 7 mit OpCache zu nutzen, sollten Sie zunächst im Kundenmenü eine aktuelle PHP-Version für Ihre Webseiten einstellen. Erstellen Sie dann in Ihrem Benutzerverzeichnis auf dem Webserver ein Unterverzeichnis für die Bytecode-Dateien. Dieses Verzeichnis können Sie beliebig benennen (z.B. .opcache), und an beliebiger Stelle in Ihrem Benutzerverzeichnis anlegen, es sollte jedoch aus Sicherheitsgründen nicht per HTTP über den Webserver aufrufbar sein: Sie können das Verzeichnis entweder per .htaccess-Datei sperren, die Zugriffsrechte auf Ihren Webserver-Benutzer beschränken (chmod 700), oder es oberhalb des für Ihre Domains gewählten Wurzelverzeichnisses anlegen. Das OpCache-Verzeichnis kann von von mehreren unterschiedlichen PHP-Anwendungen gleichzeitig benutzt werden, Sie müssen also nicht für jede Anwendung ein eigenes Verzeichnis anlegen.

Legen Sie dann im gewünschten Anwendungsverzeichnis eine .htaccess-Datei mit folgendem Inhalt an (bzw. fügen Sie folgende Zeilen zu einer bestehenden .htaccess-Datei hinzu):

SetEnv PHPRC /homepages/u12345/wordpress/php.ini

Mit dieser Zeile wird eine globale PHP-Konfigurationsdatei festgelegt, die in sämtlichen Unterverzeichnissen geladen wird. Ersetzen Sie dabei wordpress durch das von Ihnen gewählte Anwendungsverzeichnis und u12345 durch Ihre Webserver-Benutzerkennung. Anschließend legen Sie in diesem Verzeichnis eine php.ini-Datei mit folgendem Inhalt an (bzw. fügen die folgenden Zeilen zu einer bestehenden php.ini-Datei hinzu):

zend_extension=/vrmd/webserver/php72/lib/opcache.so
opcache.file_cache=/homepages/u12345/.opcache
opcache.file_cache_only=1

In der ersten Zeile wird die OpCache-Extension geladen, passen sie dabei php72 an die von Ihnen genutzte PHP-Version an (z.B. php73 für PHP 7.3). In der zweiten Zeile wird das Bytecode-Verzeichnis für OpCache festgelegt, ersetzen Sie .opcache ggf. durch den Pfad zum gewünschten Bytecode-Verzeichnis und u12345 durch Ihre Webserver-Benutzerkennung.

Mögliche Performance-Gewinne durch OpCache

Durch Nutzung von OpCache lassen sich PHP-Anwendungen um etwa 50% beschleunigen. Neben einer verbesserten Benutzererfahrung wirkt sich dies auch positiv auf die Bewertung durch Suchmaschinen aus. OpCache kann jedoch nur die Ausführungszeit für PHP-Scripte auf dem Webserver reduzieren, die Gesamtladezeit einer Webseite hängt auch von anderen Faktoren wie Größe und Anzahl der Bilder, CSS- und JavaScript-Dateien ab.

Hinweis: Beachten Sie bitte, dass PHP im Opcache-Verzeichnis automatisch zusätzliche Dateien anlegt, die von Ihrem verfügbaren Webspace-Speicherplatz abgezogen werden. Bei jedem PHP-Update wird dort automatisch ein neues Unterverzeichnis erstellt, und sämtliche Cache-Dateien werden neu generiert, doch die alten Cache-Dateien und Verzeichnisse werden nicht automatisch gelöscht. Sie sollten ältere OpCache-Dateien daher gelegentlich löschen, sonst könnte Ihr Speicherplatz-Kontigent irgendwann erschöpft sein, und Ihre Webseite funktioniert nicht mehr.

Links


OpCache
PHP