Signatur
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
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';
}
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');
// 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.