Sin opcache, PHP lee y compila cada archivo en cada petición: el mismo trabajo, miles de veces por minuto, para archivos que no han cambiado. opcache guarda la forma compilada en memoria. Suele ser la mayor mejora individual disponible, y es un ajuste.
opcache.enable=1
opcache.memory_consumption=192
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
Compruebe que de verdad está activo
php -i | grep -E 'opcache.enable|opcache.memory'
# or, in a page you can reach:
print_r(opcache_get_status()['opcache_statistics']);
- opcache_hit_rate por debajo del 95 %: memory_consumption es demasiado pequeño y está expulsando archivos que volverá a necesitar.
- num_cached_keys cerca de max_accelerated_files: suba el límite de archivos; un framework grande tiene más archivos de los que permite el valor por defecto.
Lo que NO hace
Cachea código compilado, no resultados. Una consulta lenta es exactamente igual de lenta con opcache activo. Si su página va lenta por lo que le pide a la base de datos, esto no cambia nada, y esa es la decepción más común.
El ajuste que esconde un despliegue
opcache.validate_timestamps=0 es más rápido y significa que PHP no comprueba nunca si un archivo cambió. Su despliegue sale y el sitio sigue sirviendo el código viejo, sin error en ninguna parte. Si lo activa, su despliegue TIENE QUE vaciar la caché.# after deploying, with validate_timestamps=0
cachetool opcache:reset
# or reload the pool
systemctl reload php8.3-fpm
En el alojamiento de EGPHP, opcache está activo y ajustado al pool. Esta página es para un VPS que lleva usted mismo.