Start · Sprachen · PHP · Referenz · apcu_enabled

apcu_enabled

Funktion

Prüft, ob APCu im aktuellen PHP-Prozess aktiv und verfügbar ist.

seit PHP 5.1.0 Kategorie: misc

Signatur

apcu_enabled(): bool

Beschreibung

apcu_enabled() gibt true zurück, wenn die APCu-Erweiterung geladen ist und in der aktuellen Umgebung tatsächlich genutzt werden kann. Dies ist nicht zwangsläufig dasselbe wie das bloße Vorhandensein der Erweiterung – APCu kann z. B. per apc.enabled=0 in der php.ini deaktiviert oder in CLI-Skripten bewusst abgeschaltet sein (apc.enable_cli=0).

Die Funktion ist besonders nützlich, bevor Cache-Operationen wie apcu_store() oder apcu_fetch() aufgerufen werden. Sie ermöglicht es, einen Fallback-Mechanismus (z. B. ein einfaches Array im Speicher) einzuleiten, ohne dass ein Fehler geworfen wird.

In Webanwendungen mit optionalem Caching-Layer empfiehlt es sich, apcu_enabled() einmalig beim Bootstrapping zu prüfen und das Ergebnis in einer Konfigurationsvariable zu speichern, statt die Prüfung bei jedem Cache-Aufruf zu wiederholen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn APCu aktiv und nutzbar ist, andernfalls false.

Beispiele

Einfache Verfügbarkeitsprüfung vor Cache-Zugriff

<?php
if (apcu_enabled()) {
    $cached = apcu_fetch('mein_schluessel', $success);
    if (!$success) {
        $cached = 'berechneter Wert';
        apcu_store('mein_schluessel', $cached, 60);
    }
    echo $cached;
} else {
    // Fallback: Direkte Berechnung ohne Cache
    echo 'berechneter Wert';
}
berechneter Wert

Einmaliger Check beim Bootstrap mit Fallback-Logik

<?php
class Cache {
    private bool $apcuAvailable;
    private array $fallback = [];

    public function __construct() {
        $this->apcuAvailable = apcu_enabled();
    }

    public function get(string $key): mixed {
        if ($this->apcuAvailable) {
            return apcu_fetch($key);
        }
        return $this->fallback[$key] ?? null;
    }

    public function set(string $key, mixed $value, int $ttl = 300): void {
        if ($this->apcuAvailable) {
            apcu_store($key, $value, $ttl);
        } else {
            $this->fallback[$key] = $value;
        }
    }
}

$cache = new Cache();
$cache->set('beispiel', 42);
echo $cache->get('beispiel');
42

// Wichtig · Fallstricke

CLI-Umgebung: Standardmäßig ist APCu in der CLI deaktiviert (apc.enable_cli=0). Für Tests oder CLI-Skripte, die APCu nutzen sollen, muss apc.enable_cli=1 in der php.ini gesetzt oder per -d apc.enable_cli=1 übergeben werden – andernfalls liefert apcu_enabled() in der CLI stets false.

Verfügbarkeit: Die Funktion existiert nur, wenn die APCu-Erweiterung installiert ist. Ein Aufruf ohne installierte Erweiterung führt zu einem Fatal Error. Mit function_exists('apcu_enabled') kann die Existenz der Funktion selbst abgesichert werden.