APC USER CACHE EN PHP: CÓMO FUNCIONA Y CÓMO UTILIZARLO
APC User Cache, o APCu, es una extensión de php que proporciona un caché en memoria muy rápido y ligero para almacenar datos de la aplicación. Es un array asociativo gigante en RAM compartido entre todos los procesos PHP del servidor, donde se pueden guardar y recuperar variables PHP (strings, arrays, objetos serializables, etc.) con claves de tipo string.h2 style="color:#333; border-bottom:2px solid #0a5; padding-bottom:8px; margin:40px 0 20px;">¿Qué cachea exactamente?- Datos de usuario / aplicación (no código PHP compilado).
- Resultados de consultas a BD que no cambian mucho.
- Configuraciones cargadas desde archivos.
- Resultados de funciones caras (cálculos, procesamiento de datos).
- Objetos completos o arrays grandes que se usan repetidamente.
Ventajas
- Muy rápido → acceso en memoria sin red (más rápido que Redis/Memcached en un solo servidor).
- Cero overhead de red (no se necesita servidor externo como Redis).
- Ideal para hosting compartido o servidores únicos.
- Reduce drásticamente las consultas a bases de datos.
- Muy usado en WordPress (con plugins como Redis Object Cache o APCu-specific) para acelerar wp_cache_get/set.
Desventajas
- No distribuido → solo sirve en un servidor (si tienes load balancer con varios servidores,
cada uno tiene su propio APCu → datos no compartidos).
- Se limpia al reiniciar PHP-FPM (reinicio del servidor web, deploy, etc.).
- Consume RAM (debes configurarlo bien para no llenar la memoria).
Funciones principales
apcu_store('clave', $valor, $ttl_segundos); // Guardar
$valor = apcu_fetch('clave'); // Obtener (false si no existe)
apcu_add('clave', $valor); // Solo si no existe
apcu_delete('clave'); // Borrar
apcu_clear_cache(); // Limpiar todo (cuidado!)
apcu_exists('clave'); // ¿Existe?
apcu_inc('contador', 1); // Incrementar (útil para contadores)
Ejemplo:
$key = 'config_app';
$config = apcu_fetch($key);
if ($config === false) {
$config = cargarConfigDeBD(); // consulta pesada
apcu_store($key, $config, 3600); // 1 hora
}
- No distribuido → solo sirve en un servidor (si tienes load balancer con varios servidores, cada uno tiene su propio APCu → datos no compartidos).
- Se limpia al reiniciar PHP-FPM (reinicio del servidor web, deploy, etc.).
- Consume RAM (debes configurarlo bien para no llenar la memoria).
Funciones principales
apcu_store('clave', $valor, $ttl_segundos); // Guardar
$valor = apcu_fetch('clave'); // Obtener (false si no existe)
apcu_add('clave', $valor); // Solo si no existe
apcu_delete('clave'); // Borrar
apcu_clear_cache(); // Limpiar todo (cuidado!)
apcu_exists('clave'); // ¿Existe?
apcu_inc('contador', 1); // Incrementar (útil para contadores)
Ejemplo:
$key = 'config_app';
$config = apcu_fetch($key);
if ($config === false) {
$config = cargarConfigDeBD(); // consulta pesada
apcu_store($key, $config, 3600); // 1 hora
}
apcu_store('clave', $valor, $ttl_segundos); // Guardar
$valor = apcu_fetch('clave'); // Obtener (false si no existe)
apcu_add('clave', $valor); // Solo si no existe
apcu_delete('clave'); // Borrar
apcu_clear_cache(); // Limpiar todo (cuidado!)
apcu_exists('clave'); // ¿Existe?
apcu_inc('contador', 1); // Incrementar (útil para contadores)
$key = 'config_app';
$config = apcu_fetch($key);
if ($config === false) {
$config = cargarConfigDeBD(); // consulta pesada
apcu_store($key, $config, 3600); // 1 hora
}