Comparativa independiente · sin rankings de pago
Inicio / Blog / Técnico / Invalidar OPcache durante una implementación sin entregar código antiguo

Invalidar OPcache durante una implementación sin entregar código antiguo

Implementar PHP sin tocar OPcache significa apostar a que nadie mantendrá la versión compilada anterior en la memoria, hasta el próximo error fantasma.

Redacción Hébergeurs.eu 5 min Actualizado 19 jul. 2026

Error solucionado en producción: ticket cerrado. Los usuarios aún ven el error. ¿Caché CDN? Vacío. ¿Código de operación? opcache.validate_timestamps=0 desde una configuración de “rendimiento”: los archivos PHP se actualizan en el disco, pero el antiguo código de bytes permanece servido cuarenta minutos hasta el reinicio en pánico de PHP-FPM.

OPcache es una aceleración: mal administrada en producción, es un caché de código que ignora sus implementaciones. El problema no es “borrar el caché”; está sincronizando la versión en el disco y los trabajadores PHP sin causar una cascada 502.

Ciclo de implementación saludable

Una implementación PHP confiable sigue una secuencia documentada:

  1. Lanzamiento atómico: /releases/20260719/ más enlace simbólico actual.
  2. Instalación de redacción, migraciones, precalentamiento de caché de aplicaciones.
  3. php articulado optimizar o caché de Symfony si corresponde.
  4. Recarga PHP-FPM: systemctl recarga php8.2-fpm (elegante).
  5. Prueba de humo en el control sanitario.
  6. Retroceso = revertir enlace simbólico más recargar.

La "recarga" recicla a los trabajadores gradualmente: las solicitudes actuales finalizan; Los nuevos trabajadores cargan un OPcache nuevo. Un "reinicio" repentino provoca un apagado; "recargar" es la opción preferida para una implementación ininterrumpida.

reiniciar brutal versus recargar elegante: el primero interrumpe el servicio; el segundo conserva las conexiones actuales.

validar_timestamps: el compromiso para entender

ConfiguraciónComportamientoUso
validate_timestamps=1stat() en el archivo, se vuelve a compilar si mtime cambiaDesarrollo, preproducción
validate_timestamps=0nunca vuelva a revisar el discoProducción más recarga en cada despliegue

Con revalidate_freq=0 y validate=1, cada solicitud verifica el disco: una carga de E/S innecesaria en producción. El par validate_timestamps=0 más la recarga de FPM programada es el estándar para los equipos que implementan varias veces por semana.

Estrategias de invalidación

A — Recarga de FPM (recomendado) Paso posterior a la implementación en el script: systemctl reload php-fpm. Sencillo, predecible, sin mayores interrupciones.

B — opcache_reset() en la línea de comando posterior a la implementación A través de SSH de una sola vez: aceptable si solo hay un grupo PHP-FPM. Nunca en una solicitud HTTP.

C: Implementación gradual en N servidores Equilibrador de carga en drenaje → implementación → recarga → reactivación. Cero tiempo de inactividad en un clúster.

D — opcache.file_cache Segundo nivel en disco: preste atención a la sincronización entre nodos durante la implementación.

Trampas y contenedores multiversión

  • Azul-verde con dos versiones: trabajadores mixtos si se recarga parcialmente: complete la recarga en todos los nodos antes de cambiar el tráfico.
  • Precarga de PHP 7.4+: un cambio de archivo de precarga requiere un reinicio completo, no una simple recarga.
  • Docker: nueva imagen = nuevo contenedor, OPcache nuevo. Montaje de volumen para código = mismo problema de validate_timestamps.

En hosting compartido, no hay recarga de FPM de autoservicio: implementación de FTP con validate_timestamps=1 impuesto o ticket de soporte. Razón de más para un VPS o PaaS si lo implementa con frecuencia.

La cumbre: OPcache sin procedimiento de implementación es una prueba A/B no intencionada

Esto es lo que la configuración de "rendimiento" olvida documentar.

Lista de verificación de implementación de PHP: enlace simbólico más recarga de FPM documentado, no “cargamos y esperamos”.

Decide y avanza sin puntos ciegos

Durante medio día, podrás proteger tus implementaciones PHP:

  1. Aprobar validate_timestamps=0 en producción con recarga de FPM programada.
  2. Configurar una implementación atómica mediante un enlace simbólico.
  3. Hacer obligatoria una prueba de humo posterior a la recarga.
  4. No permitir opcache_reset() en puntos finales web.
  5. Planifique una implementación por fases si tiene varios servidores.

Documente la secuencia completa en su runbook de implementación: quién inicia la recarga, cómo verificar que todos los trabajadores se hayan reciclado y qué prueba confirma que el nuevo código se entrega correctamente. Referencia cruzada con PHP Profiling para medir el impacto de una implementación deficiente y implementación azul-verde para arquitecturas de múltiples instancias.

Preguntas frecuentes

¿Por qué se ejecuta el código antiguo después de la implementación?

OPcache mantiene el código de bytes compilado en la memoria. Con validate_timestamps=0, los archivos modificados en el disco no activan una recarga hasta que un trabajador se recicla mediante una recarga de FPM.

¿opcache_reset() es seguro en prod?

No en la solicitud web: es un reinicio global brutal. Prefiere una recarga elegante de PHP-FPM o un restablecimiento de la línea de comando posterior a la implementación, excluyendo el tráfico de usuarios.

validar_timestamps=1 en producción?

Posible en preproducción. En producción, esto agrega llamadas stat() a cada inclusión. El compromiso común sigue siendo validate_timestamps=0 más la recarga de FPM en cada implementación.

¿Ayuda el despliegue atómico?

Sí. El cambio de enlace simbólico más la recarga de FPM sincroniza a todos los trabajadores en el mismo árbol de archivos, sin mezclar versiones nuevas y antiguas.


Después de una implementación, si OPcache no ha sido invitado a la fiesta, usted mantiene dos versiones del sitio: una en git y otra en RAM.

Compara proveedores europeos

Filtra por cumplimiento, ubicación y caso de uso — luego abre las fichas para verificar el alcance real.

Explorar el directorio
Blog

Lecturas relacionadas

Todos los artículos →