Start · Sprachen · PHP · Referenz · opcache_is_script_cached_in_file_cache

opcache_is_script_cached_in_file_cache

Funktion

Prüft, ob ein PHP-Skript im OPcache-Dateicache (<code>opcache.file_cache</code>) gespeichert ist.

seit PHP 8.4.0 Kategorie: misc

Signatur

opcache_is_script_cached_in_file_cache(string $filename): bool

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

Typ
bool
Beschreibung
Gibt 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.";
}
Das Skript ist 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";
    }
}
Alle kritischen Skripte sind im Dateicache vorhanden.

// 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.