Start · Sprachen · PHP · Referenz · wincache_ocache_meminfo

wincache_ocache_meminfo

Funktion

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

seit PHP 1.0.0 Kategorie: misc

Signatur

wincache_ocache_meminfo(): array|false

Beschreibung

wincache_ocache_meminfo() ist eine Funktion der WinCache-Erweiterung für PHP unter Windows und liefert detaillierte Informationen über den Speicherverbrauch des Opcode-Caches. Der Opcode-Cache speichert kompilierte PHP-Bytecode-Versionen von Skripten, um wiederholte Kompilierungen zu vermeiden und so die Ausführungsgeschwindigkeit zu verbessern.

Die zurückgegebenen Daten umfassen Informationen wie die Gesamtgröße des reservierten Speichers, den aktuell genutzten und freien Speicher sowie Angaben zur Anzahl der freien und belegten Speicherblöcke. Diese Informationen sind nützlich, um die Effizienz des Caches zu überwachen und die Konfiguration bei Bedarf anzupassen.

Die Funktion eignet sich besonders für Diagnose- und Monitoring-Zwecke in Produktionsumgebungen auf Windows-Servern (z. B. mit IIS). Durch die regelmäßige Auswertung der Speichernutzung lassen sich Engpässe frühzeitig erkennen und die WinCache-Konfigurationsparameter (wie wincache.ocachesize) gezielt optimieren.

Beachte, dass wincache_ocache_meminfo() nur verfügbar ist, wenn die WinCache-Erweiterung geladen ist und der Opcode-Cache aktiviert wurde. Die Funktion gibt false zurück, wenn die Informationen nicht ermittelt werden konnten.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit folgenden Schlüsseln zurück:
  • memory_total – Gesamtgröße des für den Opcode-Cache reservierten Speichers in Bytes.
  • memory_free – Aktuell freier Speicher im Opcode-Cache in Bytes.
  • num_used_blks – Anzahl der aktuell belegten Speicherblöcke.
  • num_free_blks – Anzahl der freien Speicherblöcke.
  • num_overhead_blks – Anzahl der für den Overhead verwendeten Speicherblöcke.
Gibt false zurück, wenn die Informationen nicht abgerufen werden konnten oder WinCache nicht aktiv ist.

Beispiele

Speichernutzung des Opcode-Caches ausgeben

<?php
$meminfo = wincache_ocache_meminfo();

if ($meminfo === false) {
    echo 'WinCache Opcode-Cache-Informationen konnten nicht abgerufen werden.';
} else {
    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 'Belegte 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;
}
Gesamtspeicher: 64.00 MB Freier Speicher: 52.34 MB Belegte Blöcke: 128 Freie Blöcke: 312 Overhead-Blöcke: 1

Speicherauslastung prozentual ermitteln

<?php
$meminfo = wincache_ocache_meminfo();

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

    printf(
        'Opcode-Cache-Auslastung: %.1f%% (%s von %s MB belegt)' . PHP_EOL,
        $usage,
        number_format($used / 1024 / 1024, 2),
        number_format($meminfo['memory_total'] / 1024 / 1024, 2)
    );

    if ($usage > 90) {
        echo 'Warnung: Opcode-Cache ist fast voll. Erhöhe wincache.ocachesize in der php.ini.' . PHP_EOL;
    }
} else {
    echo 'WinCache ist nicht verfügbar oder der Opcode-Cache ist deaktiviert.' . PHP_EOL;
}
Opcode-Cache-Auslastung: 18.2% (11.66 von 64.00 MB belegt)

// Wichtig · Fallstricke

Plattformabhängigkeit: wincache_ocache_meminfo() ist ausschließlich unter Windows verfügbar und setzt die Installation der WinCache-Erweiterung voraus. Auf Linux- oder macOS-Systemen existiert diese Funktion nicht.

Deprecation: Ab WinCache 2.0 wurde der klassische Opcode-Cache entfernt, da PHP ab Version 5.5 einen eigenen OPcache (opcache) mitbringt. wincache_ocache_meminfo() kann auf neueren Kombinationen von PHP und WinCache daher immer false zurückgeben oder gar nicht vorhanden sein. Für aktuelle Projekte empfiehlt sich die Verwendung von opcache_get_status().

Zugriffsrechte: In manchen Konfigurationen ist der Zugriff auf Cache-Informationen auf bestimmte Benutzer oder Kontexte beschränkt. Stelle sicher, dass das PHP-Skript mit den nötigen Berechtigungen ausgeführt wird.