Signatur
Beschreibung
opcache_is_script_cached_in_file_cache() ermöglicht es festzustellen, ob für ein bestimmtes PHP-Skript bereits eine gecachte Version im OPcache-Dateicache auf dem Dateisystem vorliegt. Der Dateicache wird aktiviert, wenn die INI-Einstellung opcache.file_cache auf ein gültiges Verzeichnis gesetzt ist.
Diese Funktion ist nützlich, um den Zustand des persistenten Dateicaches zu inspizieren – etwa in Deployment-Skripten oder Monitoring-Tools –, ohne dass ein vollständiger OPcache-Status abgefragt werden muss. Im Gegensatz zu opcache_is_script_cached(), das den In-Memory-Cache prüft, bezieht sich diese Funktion ausschließlich auf den dateibasierten Cache.
Typische Einsatzszenarien sind die Validierung nach einem Warmup-Prozess, bei dem sichergestellt werden soll, dass kritische Skripte im Dateicache vorliegen, bevor der In-Memory-Cache befüllt wird, oder in Umgebungen, in denen opcache.file_cache_only aktiv ist und kein Shared-Memory-Cache existiert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Absoluter oder relativer Pfad zur PHP-Skript-Datei, deren Vorhandensein im OPcache-Dateicache geprüft werden soll. |
Rückgabewert
true zurück, wenn das angegebene Skript im OPcache-Dateicache gecacht ist, andernfalls false. Gibt ebenfalls false zurück, wenn OPcache deaktiviert ist oder kein Dateicache konfiguriert wurde.Beispiele
Prüfen, ob ein Skript im Dateicache liegt
<?php
// Voraussetzung: opcache.file_cache = /tmp/opcache in php.ini gesetzt
$script = '/var/www/html/index.php';
if (opcache_is_script_cached_in_file_cache($script)) {
echo "Das Skript ist im OPcache-Dateicache vorhanden.";
} else {
echo "Das Skript ist NICHT im OPcache-Dateicache vorhanden.";
}
Warmup-Validierung nach Deployment
<?php
// Nach einem Cache-Warmup sicherstellen, dass alle kritischen Dateien gecacht sind
$criticalFiles = [
'/var/www/html/index.php',
'/var/www/html/src/App.php',
'/var/www/html/src/Router.php',
];
$missing = [];
foreach ($criticalFiles as $file) {
if (!opcache_is_script_cached_in_file_cache($file)) {
$missing[] = $file;
}
}
if (empty($missing)) {
echo "Alle kritischen Skripte sind im Dateicache vorhanden.\n";
} else {
echo "Folgende Skripte fehlen im Dateicache:\n";
foreach ($missing as $f) {
echo " - $f\n";
}
}
// Wichtig · Fallstricke
Konfigurationsvoraussetzung: Die Funktion setzt voraus, dass opcache.file_cache in der php.ini auf ein beschreibbares Verzeichnis gesetzt ist. Ohne diese Einstellung gibt die Funktion stets false zurück.
Unterschied zu opcache_is_script_cached(): Letztere prüft den In-Memory-Shared-Memory-Cache, während opcache_is_script_cached_in_file_cache() ausschließlich den persistenten Dateicache auf dem Dateisystem prüft. Beide Caches können gleichzeitig aktiv sein.
Verfügbarkeit: Diese Funktion ist erst ab PHP 8.4.0 verfügbar. In älteren PHP-Versionen existiert sie nicht und führt zu einem fatalen Fehler, wenn sie aufgerufen wird.