Opciones de configuración de PHP OPcache en Core-Admin
Introducción
Core-Admin incorpora nuevas opciones de configuración para el módulo PHP OPcache directamente desde el panel de administración de cada alojamiento web. Estas opciones permiten controlar el comportamiento de la caché de código PHP sin necesidad de editar manualmente ficheros de configuración en el servidor.
¿Qué es PHP OPcache?
PHP OPcache es un módulo integrado en PHP que almacena en memoria compartida el código PHP precompilado (bytecode). Esto evita que PHP tenga que leer, analizar y compilar los ficheros .php en cada petición, lo que mejora significativamente el rendimiento.
Sin embargo, esta caché introduce un compromiso: si un fichero PHP se modifica en disco (por ejemplo, al subir una nueva versión vía FTP/SFTP), OPcache puede seguir sirviendo la versión antigua hasta que detecte el cambio o se reinicie el servicio PHP-FPM.
¿Por qué es importante configurar estas opciones?
Un caso habitual es el de usuarios que suben ficheros por SFTP y no ven los cambios reflejados inmediatamente en su web. Esto ocurre porque OPcache no comprueba los ficheros en cada petición, sino a intervalos configurables. Con estas nuevas opciones, el administrador puede ajustar ese comportamiento por sitio, sin afectar al resto de alojamientos del servidor.
Nuevas opciones disponibles
Las opciones de OPcache se configuran desde la sección Opciones de cada alojamiento web en Core-Admin.
A continuación se describe cada opción, su valor por defecto y los escenarios donde resulta útil modificarla.
opcache.enable
| Campo | Valor |
|---|---|
| Tipo | Entero |
| Valores posibles |
0 (desactivado), 1 (activado) |
| Valor por defecto | 1 |
Activa o desactiva por completo el módulo OPcache para el alojamiento. Cuando está desactivado, PHP lee, analiza y compila cada fichero en cada petición.
¿Cuándo modificarla?
- Depuración: durante la resolución de problemas en producción, desactivar OPcache temporalmente garantiza que cada petición ejecuta el código más reciente.
- Entornos de desarrollo: si el alojamiento se usa como entorno de desarrollo activo donde el código cambia constantemente.
️ Desactivar OPcache afecta al rendimiento. Se recomienda reactivarlo una vez finalizada la depuración.
opcache.revalidate_freq
| Campo | Valor |
|---|---|
| Tipo | Entero (segundos) |
| Valores posibles |
0 o superior |
| Valor por defecto | 2 |
Define cada cuántos segundos OPcache comprueba si los ficheros PHP han cambiado en disco. Durante ese intervalo, OPcache sirve la versión cacheada sin consultar el sistema de ficheros.
Comportamiento según el valor:
| Valor | Comportamiento |
|---|---|
0 |
Comprueba en cada petición. Máxima frescura, mayor coste de I/O. |
2 (defecto) |
Comprueba como máximo cada 2 segundos. Buen equilibrio general. |
60 |
Comprueba como máximo cada minuto. Buen rendimiento, pero los cambios tardan hasta 1 minuto en verse. |
300 |
Comprueba cada 5 minutos. Orientado a producción estable donde el código no cambia frecuentemente. |
¿Cuándo modificarla?
-
Subidas frecuentes por FTP/SFTP: si los usuarios suben código y no ven los cambios inmediatamente, reducir este valor (por ejemplo, a
2o0) resuelve el problema. -
Sitios estables en producción: en sitios donde el código solo cambia en despliegues planificados, un valor alto (
60–300) reduce la carga de I/O.
Esta es la opción más relevante para resolver el problema de “he subido un fichero y no se ve el cambio”.
opcache.validate_timestamps
| Campo | Valor |
|---|---|
| Tipo | Entero |
| Valores posibles |
0 (desactivado), 1 (activado) |
| Valor por defecto | 1 |
Controla si OPcache comprueba las fechas de modificación de los ficheros para detectar cambios. Cuando está activado, OPcache consulta el mtime de cada fichero (con la frecuencia definida en opcache.revalidate_freq) y recarga aquellos que hayan cambiado.
Si se desactiva (0):
- OPcache nunca comprueba si los ficheros han cambiado en disco.
- La opción
opcache.revalidate_freqse ignora por completo. - La única forma de que OPcache cargue código nuevo es reiniciar el servicio PHP-FPM.
¿Cuándo modificarla?
- Producción de alto rendimiento: en sitios con mucho tráfico donde el código solo cambia en ventanas de mantenimiento controladas, desactivar esta opción elimina por completo el coste de comprobar ficheros en disco.
- No recomendado para sitios donde los usuarios suben código regularmente, ya que los cambios no se verán hasta reiniciar PHP-FPM.
️ Si desactiva esta opción, recuerde que deberá reiniciar PHP-FPM (o usar la opción “Aplicar opciones y reiniciar” en Core-Admin) cada vez que se modifique el código del sitio.
opcache.memory_consumption
| Campo | Valor |
|---|---|
| Tipo | Entero (megabytes) |
| Valores posibles |
8 o superior |
| Valor por defecto | 128 |
Define la cantidad de memoria compartida (en MB) que OPcache puede utilizar para almacenar el bytecode compilado. Cuando esta memoria se llena, OPcache empieza a descartar ficheros cacheados para hacer espacio, lo que obliga a recompilarlos en la siguiente petición.
Valores orientativos:
| Tipo de sitio | Valor recomendado |
|---|---|
| Sitio simple (landing page, web corporativa) |
64–128
|
| WordPress con plugins moderados |
128–192
|
| Aplicaciones grandes (Magento, Moodle, ERP) |
192–512
|
¿Cuándo modificarla?
- Si en los logs de PHP aparecen mensajes relacionados con “opcache out of memory” o “restart”.
- Si el sitio ejecuta una aplicación con un gran número de ficheros PHP y se observa rendimiento irregular.
opcache.max_accelerated_files
| Campo | Valor |
|---|---|
| Tipo | Entero |
| Valores posibles |
200 o superior |
| Valor por defecto | 10000 |
Define el número máximo de ficheros PHP que OPcache puede mantener en caché simultáneamente. Si la aplicación tiene más ficheros PHP que este límite, los ficheros que excedan el límite no se cachearán y se compilarán en cada petición.
Valores orientativos:
| Tipo de sitio | Ficheros PHP aproximados | Valor recomendado |
|---|---|---|
| Sitio simple | < 500 |
10000 (defecto) |
| WordPress + plugins | 5.000–15.000 |
15000–20000
|
| Magento 2, Moodle | 30.000–60.000 |
50000–65000
|
¿Cuándo modificarla?
- Si la aplicación es grande y se sospecha que no todos los ficheros se están cacheando.
- Se puede verificar con
opcache_get_status()desde un script PHP para comprobar cuántos ficheros tiene cacheados OPcache frente al máximo configurado.
Relación entre las opciones
Las opciones de OPcache interactúan entre sí. El siguiente diagrama resume cómo se relacionan:
¿opcache.enable = 1?
│
├─ NO → OPcache desactivado. Cada petición compila el PHP desde cero.
│
└─ SÍ → ¿opcache.validate_timestamps = 1?
│
├─ NO → OPcache nunca comprueba cambios.
│ Solo recarga con reinicio de PHP-FPM.
│ (opcache.revalidate_freq se ignora)
│
└─ SÍ → OPcache comprueba cambios cada
opcache.revalidate_freq segundos.
│
├─ Si mtime cambió → recarga el fichero
└─ Si mtime no cambió → sirve versión cacheada
La cantidad de ficheros y el tamaño del código que OPcache puede mantener en memoria se controla con opcache.memory_consumption y opcache.max_accelerated_files.
Configuraciones recomendadas según el escenario
Desarrollo activo / subidas frecuentes por FTP
Para sitios donde los usuarios modifican ficheros con frecuencia y necesitan ver los cambios de inmediato:
| Opción | Valor |
|---|---|
opcache.enable |
1 |
opcache.validate_timestamps |
1 |
opcache.revalidate_freq |
0 o 2
|
Producción estándar
Para la mayoría de sitios en producción, la configuración por defecto es adecuada:
| Opción | Valor |
|---|---|
opcache.enable |
1 |
opcache.validate_timestamps |
1 |
opcache.revalidate_freq |
2 (defecto) |
Producción de alto rendimiento
Para sitios con mucho tráfico donde el código solo cambia en despliegues controlados:
| Opción | Valor |
|---|---|
opcache.enable |
1 |
opcache.validate_timestamps |
0 |
opcache.memory_consumption |
256 o superior |
opcache.max_accelerated_files |
Ajustar según la aplicación |
️ Con esta configuración, después de cada despliegue es necesario reiniciar PHP-FPM para que OPcache cargue el código nuevo.
Cómo configurar estas opciones en Core-Admin
- Acceda al alojamiento web desde el panel de Core-Admin.
- Seleccione la pestaña Opciones.
- Localice la opción que desea configurar y haga clic sobre ella para editarla.
- Introduzca el valor deseado y guarde los cambios.
- Si ha modificado varias opciones con la casilla “No reiniciar servicio”, pulse “Aplicar opciones y reiniciar” para aplicar todos los cambios de una vez.
Verificación
Para comprobar que las opciones se han aplicado correctamente, puede crear un fichero PHP temporal en el alojamiento con el siguiente contenido:
<?php
phpinfo();
?>
Acceda a ese fichero desde el navegador y busque la sección Zend OPcache. Ahí se mostrarán los valores configurados.
️ Recuerde eliminar este fichero después de la verificación, ya que
phpinfo()expone información sensible del servidor.

️ Desactivar OPcache afecta al rendimiento. Se recomienda reactivarlo una vez finalizada la depuración.
Esta es la opción más relevante para resolver el problema de “he subido un fichero y no se ve el cambio”.