Start · Sprachen · PHP · Referenz · opcache_is_script_cached

opcache_is_script_cached

Funktion

Gibt zurück, ob ein PHP-Skript aktuell im OPcache zwischengespeichert ist.

seit PHP 5.5.11 Kategorie: misc

Signatur

opcache_is_script_cached(string $filename): bool

Beschreibung

opcache_is_script_cached() prüft, ob ein bestimmtes PHP-Skript bereits vom OPcache kompiliert und im Bytecode-Cache abgelegt wurde. Die Funktion gibt true zurück, wenn das Skript gecacht ist, andernfalls false.

Diese Funktion ist nützlich, wenn man diagnostizieren möchte, ob ein bestimmtes Skript tatsächlich vom OPcache profitiert, oder ob es z. B. aufgrund von Ausschlusslisten (opcache.blacklist_filename) oder wegen eines noch nicht erfolgten ersten Aufrufs noch nicht gecacht wurde. Sie eignet sich gut für Monitoring-Skripte und Admin-Panels, die den Cache-Status einzelner Dateien überwachen.

Damit die Funktion nutzbar ist, muss die OPcache-Extension geladen und aktiv sein. Ist OPcache deaktiviert oder nicht installiert, wirft die Funktion einen Fehler.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Der absolute oder relative Dateipfad zum PHP-Skript, dessen Cache-Status geprüft werden soll. Es empfiehlt sich, immer einen absoluten Pfad zu übergeben, um Mehrdeutigkeiten zu vermeiden.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Skript im OPcache zwischengespeichert ist, andernfalls false. Gibt ebenfalls false zurück, wenn OPcache nicht aktiv ist.

Beispiele

Prüfen ob ein einzelnes Skript gecacht ist

<?php
$file = '/var/www/html/index.php';

if (opcache_is_script_cached($file)) {
    echo "Das Skript ist im OPcache gespeichert.";
} else {
    echo "Das Skript ist NICHT im OPcache gespeichert.";
}
Das Skript ist im OPcache gespeichert.

Cache-Status mehrerer Skripte im Überblick

<?php
$scripts = [
    '/var/www/html/index.php',
    '/var/www/html/config.php',
    '/var/www/html/bootstrap.php',
];

foreach ($scripts as $script) {
    $status = opcache_is_script_cached($script) ? 'GECACHT' : 'NICHT GECACHT';
    echo basename($script) . ': ' . $status . PHP_EOL;
}
index.php: GECACHT config.php: GECACHT bootstrap.php: NICHT GECACHT

Dynamische Prüfung nach manuellem Cache-Reset

<?php
$file = __DIR__ . '/example.php';

echo "Vor dem Reset: " . (opcache_is_script_cached($file) ? 'gecacht' : 'nicht gecacht') . PHP_EOL;

opcache_invalidate($file, true);

echo "Nach dem Reset: " . (opcache_is_script_cached($file) ? 'gecacht' : 'nicht gecacht') . PHP_EOL;
Vor dem Reset: gecacht Nach dem Reset: nicht gecacht

// Wichtig · Fallstricke

Voraussetzung: Die OPcache-Extension muss installiert und aktiviert sein (opcache.enable=1 in der php.ini). Andernfalls gibt die Funktion false zurück oder ist gar nicht verfügbar.

CLI-Modus: Im CLI-Modus ist OPcache standardmäßig deaktiviert (opcache.enable_cli=0). In diesem Fall liefert die Funktion immer false, es sei denn, opcache.enable_cli wurde explizit auf 1 gesetzt.

Relative Pfade: Bei Übergabe relativer Pfade kann es zu unerwarteten Ergebnissen kommen, da OPcache intern mit absoluten Pfaden arbeitet. Immer realpath() oder __DIR__ verwenden, um zuverlässige Ergebnisse zu erhalten.