# Opciones de configuración de PHP OPcache en Core-Admin


#1

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.

:warning:️ 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 2 o 0) resuelve el problema.
  • Sitios estables en producción: en sitios donde el código solo cambia en despliegues planificados, un valor alto (60300) reduce la carga de I/O.

:bulb: 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_freq se 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.

:warning:️ 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) 64128
WordPress con plugins moderados 128192
Aplicaciones grandes (Magento, Moodle, ERP) 192512

¿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 1500020000
Magento 2, Moodle 30.000–60.000 5000065000

¿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

:warning:️ 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

  1. Acceda al alojamiento web desde el panel de Core-Admin.
  2. Seleccione la pestaña Opciones.
  3. Localice la opción que desea configurar y haga clic sobre ella para editarla.
  4. Introduzca el valor deseado y guarde los cambios.
  5. 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.

:warning:️ Recuerde eliminar este fichero después de la verificación, ya que phpinfo() expone información sensible del servidor.