0Pricing
PHP Academy · Lektion

OPcache: Bytecode-Caching

Aktivieren und optimieren Sie OPcache, um den Aufwand wiederholter Skriptkompilierungen zu vermeiden.

OPcache: Bytecode-Caching ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

So funktioniert PHP normalerweise

Ohne OPcache führt jede Anfrage dazu, dass PHP die folgenden Schritte ausführt: die .php-Datei von der Festplatte lesen, sie in einen AST parsen, sie in Opcodes (Bytecode) kompilieren und anschließend die Opcodes ausführen.

Was OPcache tut

OPcache speichert kompilierte Opcodes im gemeinsamen Speicher. Bei nachfolgenden Anfragen überspringt PHP das Parsen und Kompilieren und springt direkt zur Ausführung.

Auswirkungen auf die Leistung

OPcache steigert den Durchsatz von PHP-Anwendungen typischerweise um das 2- bis 5-Fache, ohne dass Änderungen am Code erforderlich sind.

OPcache aktivieren

OPcache ist seit PHP 5.5 enthalten und in vielen Distributionen standardmäßig aktiviert. Überprüfen Sie dies mit php -m | grep -i opcache.

# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0

Wichtige OPcache-Einstellungen

Passen Sie diese Einstellungen für die Produktion an:

# php.ini:
opcache.memory_consumption=256      ; MB of shared memory
opcache.interned_strings_buffer=16  ; MB for interned strings
opcache.max_accelerated_files=20000 ; max scripts to cache
opcache.validate_timestamps=0       ; disable for production!
opcache.revalidate_freq=0           ; how often to check timestamps

validate_timestamps=0

Setzen Sie in der Produktion validate_timestamps=0, um Dateisystemprüfungen bei jeder Anfrage zu deaktivieren – PHP verwendet dann immer den zwischengespeicherten Opcode. Setzen Sie den Cache nach einer Bereitstellung zurück.

OPcache zurücksetzen

Leeren Sie den Cache, nachdem Sie neuen Code bereitgestellt haben.

<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)

opcache_get_status()

Fragen Sie die OPcache-Statistiken zur Laufzeit ab, um Trefferquote und Speichernutzung zu überwachen.

<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";

Preloading (PHP 7.4+)

Beim OPcache-Preloading werden Framework-Dateien beim Serverstart in den gemeinsamen Speicher geladen. Dadurch entfällt selbst für Kernklassen der Kompilierungsaufwand bei der ersten Anfrage.

# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-data

JIT-Kompilierung (PHP 8.0+)

PHP 8 führte zusätzlich zu OPcache die JIT-Kompilierung (Just-In-Time) ein, bei der Opcodes in nativen Maschinencode umgewandelt werden. Den größten Vorteil bietet sie bei CPU-intensiven Aufgaben; für typische I/O-lastige Webanwendungen ist der Nutzen gering.

# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255

Unveränderliche Klassen

OPcache kann internierte Strings und unveränderliche Klassendefinitionen zwischen Worker-Prozessen gemeinsam nutzen und dadurch den Speicherverbrauch pro Prozess reduzieren.

Zusammenfassung

Aktivieren Sie OPcache in der Produktion mit validate_timestamps=0. Leeren Sie den Cache nach Bereitstellungen mit opcache_reset() oder durch einen Neustart von PHP-FPM. Überwachen Sie die Trefferquote mit opcache_get_status().

Kurze Überprüfung

Welche php.ini-Einstellung sollte in der Produktion den Wert 0 haben, um die maximale OPcache-Leistung zu erzielen?

Häufig gestellte Fragen

Ist die Lektion „OPcache: Bytecode-Caching“ kostenlos?

Ja — der vollständige Text von „OPcache: Bytecode-Caching“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „OPcache: Bytecode-Caching“?

Aktivieren und optimieren Sie OPcache, um den Aufwand wiederholter Skriptkompilierungen zu vermeiden. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „OPcache: Bytecode-Caching“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. PHP mit Xdebug profilieren
  2. OPcache: Bytecode-Caching
  3. Datenbankabfragen optimieren
  4. Speicherverwaltung und Performance-Tipps
← Zurück zu PHP Academy