Webhosting

OPcache

Definition

OPcache ist die PHP-Erweiterung, die bereits kompilierten Skriptcode (die Opcodes) im Shared Memory vorhält. PHP muss dadurch nicht mehr jede Datei bei jeder Anfrage neu einlesen und parsen, was Anwendungen wie WordPress, die bei jedem Seitenaufruf Hunderte PHP-Dateien laden, deutlich beschleunigt.

OPcache, Webhosting

PHP ist eine interpretierte Sprache: Bevor eine Datei ausgeführt wird, liest PHP sie ein, analysiert sie und übersetzt sie in interne Anweisungen, die Opcodes. Ohne Cache wiederholt sich diese Arbeit bei jeder Anfrage für jede geladene Datei. Die PHP-Dokumentation fasst die Aufgabe von OPcache so zusammen: Es speichert vorkompilierten Bytecode der Skripte im Shared Memory, sodass PHP die Skripte nicht bei jeder Anfrage laden und parsen muss.

Wie OPcache funktioniert

OPcache ist eine mit PHP ausgelieferte Erweiterung, die über die Direktive zend_extension geladen wird. Bei der ersten Ausführung einer Datei landen ihre Opcodes im Shared Memory. Die folgenden Anfragen verwenden sie direkt weiter, egal welcher PHP-FPM-Worker sie bearbeitet, denn der Speicher wird von den Prozessen desselben Masters gemeinsam genutzt.

Vergleich in zwei Spalten. Ohne OPcache, bei jeder Anfrage: PHP-Dateien von der Festplatte lesen, parsen und in Opcodes kompilieren, ausführen, danach ist alles vergessen. Mit OPcache: Opcodes liegen bereits im Shared Memory, sofortige Ausführung, die Änderungszeitstempel der Dateien werden standardmäßig alle 2 Sekunden geprüft.
OPcache streicht den Kompilierschritt, der sich sonst bei jeder Anfrage wiederholt.

Um Änderungen zu erkennen, prüft OPcache standardmäßig alle zwei Sekunden die Zeitstempel der Dateien (opcache.revalidate_freq=2). Schaltest du diese Prüfung ab (opcache.validate_timestamps=0), was in der Produktion etwas bringen kann, werden Dateiänderungen erst bemerkt, wenn der Cache mit opcache_reset() oder durch einen Neustart von PHP geleert wird.

Die wichtigen Einstellungen

Von PHP dokumentierte Standardwerte:

  • opcache.memory_consumption: 128 MB Shared Memory;
  • opcache.max_accelerated_files: höchstens 10.000 Dateien;
  • opcache.interned_strings_buffer: 8 MB für internierte Strings;
  • opcache.revalidate_freq: 2 Sekunden.

Ein WordPress mit Page Builder, WooCommerce und rund zwanzig Plugins kann die vorgesehene Dateizahl oder den Speicher überschreiten. Dann wird ein Teil der Skripte nicht mehr gecacht, und der Vorteil schwindet. Die Funktion opcache_get_status() oder ein Diagnose-Plugin zeigt den Füllstand an.

Seit PHP 7.4 lädt das Preloading (opcache.preload) Dateien beim Start von PHP. Es ist unter Windows nicht verfügbar und braucht für jede Aktualisierung einen Neustart: Es passt besser zu festgeschriebenen Anwendungen als zu einem WordPress, das häufig aktualisiert wird.

Video: „Was ist der Opcache und warum beschleunigt er Eure Webseite?“ (checkdomain.de)

Für WordPress

Die WordPress-Dokumentation empfiehlt, einen Opcode-Cache wie OPcache einzusetzen, um die PHP-Performance deutlich zu verbessern. Er ergänzt den Seiten-Cache und den Objekt-Cache, ohne sie zu ersetzen: OPcache spart das Kompilieren des Codes, der Objekt-Cache spart Datenbankabfragen, der Seiten-Cache spart die Ausführung von PHP.

  • Beim Shared Hosting ist OPcache normalerweise aktiv; prüfe es mit phpinfo() oder in den PHP-Einstellungen deines Panels.
  • Auf einem VPS passt du Speicher und Dateizahl an die tatsächliche Größe deiner Websites an.
  • Lade PHP-FPM nach einem Wechsel der PHP-Version neu, um mit einem sauberen Cache zu starten; das ist auch der Moment zu prüfen, ob der gewählte Zweig noch gepflegt wird (siehe PHP-Versionen am Ende ihres Supports).

Sicherheit

Auf einem geteilten Server teilen sich die Pools desselben PHP-FPM-Masters den Cache. Direktiven wie opcache.validate_permission und opcache.validate_root prüfen die Rechte an gecachten Dateien und verhindern Kollisionen in chroot-Umgebungen. Die Direktive opcache.restrict_api beschränkt die Nutzung der OPcache-Funktionen auf einen bestimmten Pfad, damit nicht irgendein Skript den Cache leeren kann. Diese Einstellungen ergänzen die aus unserem Leitfaden, um PHP zu härten.

Häufige Fehler

validate_timestamps abschalten und dann rätseln, warum eine Dateiänderung nicht sichtbar wird; auf einer großen Website den Standardspeicher belassen; glauben, OPcache ersetze einen Seiten-Cache.

Weiterlesen

  • Artikel PHP-Versionen am Lebensende: Zeitplan, Risiken und Migration

Quellen

  1. PHP Manual: OPcache (externer Link, öffnet in neuem Tab)
  2. PHP Manual: OPcache, runtime configuration (externer Link, öffnet in neuem Tab)
  3. PHP Manual: OPcache, installation (externer Link, öffnet in neuem Tab)
  4. WordPress Advanced Administration: Cache (externer Link, öffnet in neuem Tab)

Alle Definitionen

WordPress-Sicherheit ohne Lärm

Eine E-Mail, wenn es wichtig ist: neu beobachtete Angriffe, Updates des Plugins und praktische Anleitungen. Kein Spam, Abmeldung mit einem Klick.

Starte kostenlos und wechsle zu Pro, wenn du so weit bist

Die kostenlose Version versteckt WordPress bereits und verschiebt die Anmeldeseite. Pro ergänzt Aliasse, Zwei-Faktor-Authentifizierung und Überwachung.