Signatur
Beschreibung
realpath_cache_size() liefert die Menge an Speicher in Bytes, die der interne PHP-Realpath-Cache momentan belegt. Der Realpath-Cache speichert aufgelöste Pfade (z. B. nach realpath(), file_exists() oder include-Anweisungen), um wiederholte Dateisystem-Zugriffe zu vermeiden und die Performance zu steigern.
Die Funktion ist besonders nützlich für Diagnose- und Monitoring-Zwecke: Wenn der zurückgegebene Wert nahe an dem über realpath_cache_get() ermittelbaren Maximum liegt, kann es sinnvoll sein, die INI-Direktive realpath_cache_size in der php.ini zu erhöhen, um Cache-Verdrängung zu vermeiden.
Zusammen mit realpath_cache_get() – das den vollständigen Cache-Inhalt als Array zurückgibt – ermöglicht diese Funktion eine genaue Überwachung des Dateipfad-Caching-Verhaltens einer Anwendung. Gerade in großen Projekten mit vielen Dateizugriffen (z. B. Frameworks, CMS) ist dies relevant.
Der Cache ist ein Pro-Prozess-Cache und wird nicht zwischen verschiedenen PHP-Prozessen oder Requests geteilt (außer bei Einsatz von OpCode-Caches wie OPcache, die eigene Mechanismen mitbringen).
Rückgabewert
Beispiele
Aktuelle Cache-Größe ausgeben
<?php
// Einige Dateizugriffe durchführen, um den Cache zu füllen
file_exists(__FILE__);
realpath(__DIR__ . '/index.php');
$size = realpath_cache_size();
echo 'Realpath-Cache belegt: ' . $size . ' Bytes' . PHP_EOL;
// Ausgabe z. B.: Realpath-Cache belegt: 1024 Bytes
Cache-Auslastung überwachen und warnen
<?php
// Maximale Cache-Größe aus der php.ini lesen (in Bytes)
$maxSize = ini_get('realpath_cache_size');
// INI-Werte wie '4M' in Bytes umrechnen
$unit = strtoupper(substr(trim($maxSize), -1));
$value = (int) $maxSize;
$bytes = match ($unit) {
'G' => $value * 1024 ** 3,
'M' => $value * 1024 ** 2,
'K' => $value * 1024,
default => $value,
};
$current = realpath_cache_size();
$percent = round(($current / $bytes) * 100, 2);
echo sprintf(
'Realpath-Cache: %d / %d Bytes (%.2f %% ausgelastet)' . PHP_EOL,
$current,
$bytes,
$percent
);
if ($percent > 80) {
echo 'Warnung: Realpath-Cache ist zu mehr als 80 % belegt. Erhöhen Sie realpath_cache_size in der php.ini.' . PHP_EOL;
}
// Wichtig · Fallstricke
Hinweis: Die Funktion liefert nur sinnvolle Werte, wenn der Realpath-Cache aktiviert ist. Er ist standardmäßig aktiv, kann aber über die INI-Direktive realpath_cache_size=0 deaktiviert werden – in diesem Fall gibt die Funktion immer 0 zurück.
CLI vs. Web: Im CLI-Modus wird der Cache nur für die Dauer eines einzelnen Skript-Laufs gehalten. Im Web-Server-Modus (z. B. PHP-FPM) teilen Worker-Prozesse keinen gemeinsamen Cache; jeder Prozess hat seinen eigenen.
OPcache: Bei aktiviertem OPcache kann die Datei-Auflösung durch dessen internen Cache beeinflusst werden, was die über realpath_cache_size() gemessenen Werte verringern kann.