Signatur
Beschreibung
opcache_get_status() gibt ein assoziatives Array zurück, das den aktuellen Zustand des OPcache beschreibt. Damit lassen sich zur Laufzeit Informationen wie freier und verwendeter Shared Memory, die Anzahl gecachter Skripte sowie Hit- und Miss-Statistiken auswerten. Dies ist besonders nützlich für Monitoring-Dashboards und Performance-Analysen.
Das zurückgegebene Array enthält unter anderem den Schlüssel opcache_enabled (ob OPcache aktiv ist), memory_usage (Speichernutzung), opcache_statistics (Trefferrate, gecachte Skripte, Cache-Misses) und — wenn $include_scripts auf true steht — scripts mit einer Liste aller aktuell gecachten Dateien inklusive Metadaten wie Zugriffszeitpunkt und Speicherbedarf.
Die Funktion eignet sich hervorragend zum Erstellen eigener OPcache-Monitoring-Seiten. In Produktionsumgebungen sollte der Zugriff auf solche Seiten durch Authentifizierung abgesichert werden, da die Ausgabe interne Pfade und Dateistrukturen offenlegen kann.
Ist OPcache deaktiviert oder nicht verfügbar, gibt die Funktion false zurück. Um OPcache-Konfigurationsdetails zu erhalten, kann ergänzend opcache_get_configuration() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $include_scripts | bool | true | Gibt an, ob die Liste der gecachten Skripte im Rückgabe-Array enthalten sein soll. Bei true enthält der Schlüssel scripts Details zu jeder gecachten Datei. Bei sehr vielen gecachten Dateien kann das Deaktivieren (false) die Performance dieses Aufrufs verbessern. |
Rückgabewert
false, wenn OPcache deaktiviert oder nicht verfügbar ist. Das Array enthält u. a. die Schlüssel opcache_enabled, cache_full, restart_pending, restart_in_progress, memory_usage, interned_strings_usage, opcache_statistics und optional scripts.Beispiele
Grundlegende OPcache-Statusinformationen ausgeben
<?php
$status = opcache_get_status(false);
if ($status === false) {
echo 'OPcache ist nicht aktiviert.';
} else {
$mem = $status['memory_usage'];
$stats = $status['opcache_statistics'];
printf("OPcache aktiv: %s\n", $status['opcache_enabled'] ? 'Ja' : 'Nein');
printf("Verwendeter Speicher: %.2f MB\n", $mem['used_memory'] / 1024 / 1024);
printf("Freier Speicher: %.2f MB\n", $mem['free_memory'] / 1024 / 1024);
printf("Gecachte Skripte: %d\n", $stats['num_cached_scripts']);
printf("Cache-Hits: %d\n", $stats['hits']);
printf("Cache-Misses: %d\n", $stats['misses']);
$hitRate = $stats['opcache_hit_rate'];
printf("Trefferrate: %.2f %%\n", $hitRate);
}
Liste aller gecachten Skripte anzeigen
<?php
$status = opcache_get_status(true);
if (!empty($status['scripts'])) {
echo "<table border='1'>\n";
echo "<tr><th>Datei</th><th>Hits</th><th>Speicher (KB)</th><th>Zuletzt benutzt</th></tr>\n";
foreach ($status['scripts'] as $path => $info) {
printf(
"<tr><td>%s</td><td>%d</td><td>%.1f</td><td>%s</td></tr>\n",
htmlspecialchars(basename($path)),
$info['hits'],
$info['memory_consumption'] / 1024,
date('Y-m-d H:i:s', $info['last_used_timestamp'])
);
}
echo "</table>\n";
} else {
echo 'Keine Skripte im Cache oder OPcache nicht verfügbar.';
}
// Wichtig · Fallstricke
Sicherheitshinweis: Die Ausgabe von opcache_get_status() enthält absolute Dateipfade aller gecachten Skripte. Seiten, die diese Informationen ausgeben, sollten niemals öffentlich zugänglich sein — immer durch HTTP-Authentifizierung oder IP-Beschränkung absichern.
Leistungshinweis: Bei Applikationen mit Hunderten oder Tausenden gecachter Dateien kann der Aufruf mit $include_scripts = true eine merkliche Menge an Speicher und Zeit beanspruchen. Für reine Performance-Messungen daher false übergeben.
Verfügbarkeit: Die Funktion existiert nur, wenn die OPcache-Extension (ext/opcache) geladen ist. In CLI-Skripten ist OPcache häufig deaktiviert, was zu einem Rückgabewert von false führt. Prüfe ggf. vorher mit function_exists('opcache_get_status').