← Zurück zum Glossar
infrastruktur

APCu

APC User Cache — PHP-Erweiterung für In-Memory-Caching im gemeinsamen Speicher des Webserver-Prozesses.

Aktualisiert: 23. Februar 2026

Was ist APCu?

APCu (APC User Cache) ist eine PHP-Erweiterung, die einen flüchtigen Schlüssel-Wert-Speicher im gemeinsam genutzten Arbeitsspeicher des Webserver-Prozesses bereitstellt. Flüchtig bedeutet: Der Inhalt geht beim Neustart des Webservers oder PHP-FPM verloren. Gemeinsam genutzt bedeutet: Alle PHP-Worker-Prozesse eines Servers teilen sich denselben APCu-Speicher — ein Worker kann Daten schreiben, ein anderer liest sie.

APCu ist der Nachfolger des APC-Opcode-Cache. Nachdem PHP 5.5 den OPcache als eigene, fest integrierte Komponente einführte, wurde der Opcode-Cache-Teil aus APC herausgelöst. Übrig blieb der User-Cache-Teil — das ist APCu.

Technisches Kurzprofil
  • Voller Name: APC User Cache
  • Typ: Shared-Memory Key-Value Store
  • Persistenz: Flüchtig (Inhalt geht bei Server-Neustart verloren)
  • Verteilung: Kein Cluster-Support — nur innerhalb eines einzelnen Servers
  • Installation: apt install php-apcu / pecl install apcu
  • PHP-Konfiguration: apc.shm_size (Standard: 32M)
  • Status-Prüfung: php -r "var_dump(apcu_cache_info());"

Wie funktioniert APCu?

APCu stellt eine kleine API bereit:

// Wert speichern (300 Sekunden TTL)
apcu_store('mein_key', $wert, 300);

// Wert abrufen
$wert = apcu_fetch('mein_key', $success);
if (!$success) {
    // Cache-Miss: Daten aus DB laden und cachen
}

// Wert löschen
apcu_delete('mein_key');

// Atomares Inkrement
apcu_inc('zaehler', 1);

Der Zugriff ist extrem schnell, da er vollständig im RAM stattfindet und keinen Netzwerk-Roundtrip benötigt. Typische Zugriffszeiten liegen unter einer Mikrosekunde.

Speicherverwaltung: APCu verwendet einen festen Speicherblock (konfigurierbar über apc.shm_size). Wenn der Speicher voll ist, wird nach dem LRU-Prinzip (Least Recently Used) altes Material verdrängt. Cache-Fragmentierung kann bei vielen kleinen Einträgen auftreten.

APCu vs. Redis

APCu und Redis sind komplementäre, nicht konkurrierende Technologien:

EigenschaftAPCuRedis
NetzwerkKein Overhead (lokal)TCP/Unix Socket
VerteilungNur ein ServerMulti-Server-Cluster
PersistenzNeinOptional (RDB/AOF)
DatenstrukturenKey-ValueListen, Sets, Hashes, Streams...
OverheadMinimalGering, aber vorhanden
SkalierungNicht horizontalHorizontal skalierbar

Für Single-Server-WordPress-Setups ist APCu oft die schnellere Wahl für kurz-lebige, häufig abgefragte Daten. Für Session-Daten, Page Caches oder verteilte Systeme ist Redis überlegen.

APCu in WordPress

WordPress nutzt APCu über das Object-Cache-System. Wenn ein Drop-in wp-content/object-cache.php vorhanden ist, das APCu als Backend nutzt, wird der WordPress Object Cache (Transients, Options-Cache, Term-Cache) im RAM gehalten statt jedes Mal die Datenbank abzufragen.

Plugins wie APCu Object Cache Backend stellen ein solches Drop-in bereit. Die Integration prüft beim Start, ob APCu verfügbar ist:

if (function_exists('apcu_fetch') && ini_get('apc.enabled')) {
    // APCu ist verfügbar
}

In Docker/Podman-Umgebungen ist APCu oft nicht standardmäßig installiert. Bei Fehlen des php-apcu-Pakets oder bei deaktivierter Erweiterung muss der Object Cache graceful auf die Datenbankschicht fallen.

Was passiert ohne APCu?

Ohne APCu (oder alternativ Redis) führt WordPress für häufig abgefragte Daten (Options, Transients, Taxonomien) bei jedem Request Datenbankabfragen durch. Bei hohem Traffic kann das die Datenbank zum Flaschenhals machen. Die Wirkung von APCu ist am stärksten bei wiederholten Anfragen nach gleichen Daten innerhalb kurzer Zeit.

Häufige Fragen

Funktioniert APCu auch in der PHP CLI? Nur eingeschränkt. Der CLI-Prozess hat einen separaten APCu-Speicherbereich, der nicht mit dem Webserver-Pool geteilt wird. apc.enable_cli=1 muss explizit gesetzt werden. WP-Cron-Tasks und WP-CLI-Befehle sehen daher nicht denselben Cache wie der Webserver.

Kann APCu Daten verlieren, ohne dass der Server neu gestartet wurde? Ja. Bei Speicherknappheit verdrängt APCu aktiv Einträge (LRU-Eviction). Code, der APCu nutzt, muss immer mit Cache-Misses umgehen können.

Wie kann ich den APCu-Füllstand überwachen?apcu_cache_info() liefert Statistiken: Gesamtspeicher, belegter Speicher, Anzahl Einträge, Hit/Miss-Rate. Das PHP-Skript apc.php (aus dem APCu-Paket) bietet eine grafische Übersicht.

Verwandte Begriffe

LCP · PHP · Redis

start call_