Start · Sprachen · PHP · Referenz · wincache_ucache_meminfo

wincache_ucache_meminfo

Funktion

Ruft Informationen zur Speichernutzung des WinCache User-Caches ab und gibt sie als assoziatives Array zurück.

seit PHP 1.1.0 Kategorie: misc

Signatur

wincache_ucache_meminfo(): array|false

Beschreibung

wincache_ucache_meminfo() liefert detaillierte Speicherinformationen über den User-Cache von WinCache. Der User-Cache (auch User Cache genannt) ist ein gemeinsamer Speicherbereich, in dem Anwendungsdaten zwischen mehreren PHP-Prozessen und -Anfragen geteilt werden können.

Die zurückgegebenen Daten umfassen unter anderem die Gesamtgröße des allokierten Speichers, den freien und genutzten Anteil sowie die Anzahl der Speicherblöcke. Diese Informationen sind besonders nützlich für das Monitoring, die Diagnose von Speicherproblemen und die Optimierung der WinCache-Konfiguration in Produktionsumgebungen unter Windows/IIS.

Typische Einsatzgebiete sind Admin-Panels, Diagnose-Skripte oder automatisierte Überwachungssysteme, die den Gesundheitszustand des Caches regelmäßig überprüfen. Solche Skripte sollten jedoch aus Sicherheitsgründen nicht öffentlich zugänglich sein.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit Speicherinformationen zurück. Das Array enthält folgende Schlüssel:
  • memory_total — Gesamtgröße des für den User-Cache reservierten Speichers in Bytes.
  • memory_free — Aktuell freier Speicher in Bytes.
  • num_used_blks — Anzahl der derzeit genutzten Speicherblöcke.
  • num_free_blks — Anzahl der freien Speicherblöcke.
  • num_overhead_blks — Anzahl der für Verwaltungszwecke (Overhead) verwendeten Speicherblöcke.
Gibt false zurück, wenn WinCache nicht aktiviert ist oder die Informationen nicht abgerufen werden konnten.

Beispiele

Grundlegende Speicherinformationen ausgeben

<?php
$meminfo = wincache_ucache_meminfo();

if ($meminfo !== false) {
    echo 'Gesamtspeicher:     ' . number_format($meminfo['memory_total'] / 1024 / 1024, 2) . ' MB' . PHP_EOL;
    echo 'Freier Speicher:    ' . number_format($meminfo['memory_free'] / 1024 / 1024, 2) . ' MB' . PHP_EOL;
    echo 'Genutzte Blöcke:    ' . $meminfo['num_used_blks'] . PHP_EOL;
    echo 'Freie Blöcke:       ' . $meminfo['num_free_blks'] . PHP_EOL;
    echo 'Overhead-Blöcke:    ' . $meminfo['num_overhead_blks'] . PHP_EOL;
} else {
    echo 'WinCache ist nicht aktiv oder Daten konnten nicht abgerufen werden.';
}
Gesamtspeicher: 32.00 MB Freier Speicher: 28.45 MB Genutzte Blöcke: 12 Freie Blöcke: 5 Overhead-Blöcke: 2

Speicherauslastung in Prozent berechnen

<?php
$meminfo = wincache_ucache_meminfo();

if ($meminfo !== false) {
    $total = $meminfo['memory_total'];
    $free  = $meminfo['memory_free'];
    $used  = $total - $free;
    $usage = ($used / $total) * 100;

    printf(
        "Speicherauslastung: %.1f%% (%s MB von %s MB genutzt)\n",
        $usage,
        number_format($used / 1024 / 1024, 2),
        number_format($total / 1024 / 1024, 2)
    );

    if ($usage > 90) {
        echo 'WARNUNG: Der User-Cache ist zu mehr als 90% ausgelastet!';
    }
} else {
    echo 'WinCache nicht verfügbar.';
}
Speicherauslastung: 11.1% (3.55 MB von 32.00 MB genutzt)

// Wichtig · Fallstricke

Plattformabhängigkeit: WinCache ist ausschließlich für Windows-Server (IIS) verfügbar. Auf Linux- oder macOS-Systemen ist diese Funktion nicht vorhanden. Skripte, die wincache_ucache_meminfo() verwenden, sollten daher mit function_exists('wincache_ucache_meminfo') absichern, bevor sie aufgerufen werden.

Sicherheitshinweis: Diagnose-Skripte, die Cache- oder Speicherinformationen ausgeben, dürfen niemals öffentlich zugänglich sein, da sie interne Systemdetails preisgeben. Solche Seiten sollten hinter einer Authentifizierung oder IP-Beschränkung geschützt werden.

Die Funktion ist Teil der WinCache-Extension und wurde mit Version 1.1.0 eingeführt. Ab PHP 8.0 wird WinCache nicht mehr aktiv weiterentwickelt, weshalb ein Wechsel zu alternativen Caching-Lösungen wie APCu empfohlen wird.