Signatur
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
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.";
}
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;
}
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;
// 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.