Mein Variomedia

Hier können Sie sich im Kundenmenü einloggen.




Passwort vergessen?

Weitere Logins

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 Skriptsprache; 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-Skripts sofort wieder verworfen, und muss bei jedem folgenden Skript-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 Skripts. 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 Skript-Aufrufe speichern.

Unterschied zwischen PHP und PHP-FPM

Dieser Bytecode wird üblicherweise im Arbeitsspeicher gehalten, was auf unseren Shared-Hosting-Servern aus technischen Gründen nicht möglich ist. PHP mit integriertem OpCache im Arbeitsspeicher lässt sich daher nur zusammen mit PHP-FPM in einem unserer Pro.Hosting-Pakete oder auf einem eigenen Webserver verwenden. Sobald PHP-FPM genutzt wird, ist OpCache immer automatisch aktiviert.

Seit der PHP-Version 7.0 kann OpCache den Bytecode auch in Dateien speichern. Damit kann es auf allen Shared-Hosting-Servern genutzt werden.

PHP 7/8 und OpCache im Dateisystem aktivieren

Um PHP 7/8 mit OpCache zu nutzen, sollten Sie zunächst im Kundenmenü eine aktuelle PHP-Version (PHP 7 oder größer) 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=opcache.so
opcache.file_cache=/homepages/u12345/.opcache
opcache.file_cache_only=1

In der ersten Zeile wird die OpCache-Extension geladen, in der zweiten Zeile wird das Bytecode-Verzeichnis für OpCache festgelegt, ersetzen Sie hier .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-Skripte 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.

OpCache und Webspace-Speicherplatz

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.

Sie können das OpCache-Verzeichnis auch automatisch mittels eines sogenannten Cronjobs automatisch bereinigen. Um das OpCache-Verzeichnis einmal monatlich zu löschen, können Sie folgende Crontab-Zeile nutzen:

0 0 1 * * rm -rf ~/.opcache/* &> /dev/null

Links


OpCache
PHP