0Pricing
PHP Academy · Lección

OPcache: almacenamiento en caché de bytecode

Active y ajuste OPcache para eliminar la sobrecarga de compilar repetidamente los scripts.

OPcache: almacenamiento en caché de bytecode es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

Cómo funciona normalmente PHP

Sin OPcache, cada solicitud hace que PHP lea el archivo .php del disco, lo analice en un AST, lo compile en opcodes (código de bytes) y, finalmente, ejecute los opcodes.

Qué hace OPcache

OPcache almacena los opcodes compilados en memoria compartida. En las solicitudes posteriores, PHP omite los pasos de análisis y compilación y pasa directamente a la ejecución.

Impacto en el rendimiento

OPcache suele proporcionar una mejora del rendimiento de entre 2 y 5 veces en aplicaciones PHP, sin necesidad de modificar el código.

Activación de OPcache

OPcache se incluye con PHP 5.5 o posterior y está activado de forma predeterminada en muchas distribuciones. Compruébelo con php -m | grep -i opcache.

# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0

Configuración clave de OPcache

Ajuste estas opciones para producción:

# php.ini:
opcache.memory_consumption=256      ; MB of shared memory
opcache.interned_strings_buffer=16  ; MB for interned strings
opcache.max_accelerated_files=20000 ; max scripts to cache
opcache.validate_timestamps=0       ; disable for production!
opcache.revalidate_freq=0           ; how often to check timestamps

validate_timestamps=0

En producción, establezca validate_timestamps=0 para desactivar las comprobaciones del sistema de archivos en cada solicitud; PHP utilizará siempre el opcode almacenado en caché. Después del despliegue, restablezca la caché.

Restablecimiento de OPcache

Vacíe la caché después de desplegar código nuevo.

<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)

opcache_get_status()

Consulte las estadísticas de OPcache durante la ejecución para supervisar la tasa de aciertos y el uso de memoria.

<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";

Precarga (PHP 7.4 o posterior)

La precarga de OPcache carga los archivos del framework en la memoria compartida al iniciar el servidor, lo que elimina incluso la sobrecarga de compilación de la primera solicitud para las clases principales.

# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-data

Compilación JIT (PHP 8.0 o posterior)

PHP 8 introdujo la compilación JIT (Just-In-Time) sobre OPcache, que convierte los opcodes en código máquina nativo. Ofrece el mayor beneficio en tareas con un uso intensivo de CPU y una mejora marginal en las aplicaciones web habituales limitadas por la E/S.

# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255

Clases inmutables

OPcache puede compartir cadenas internadas y definiciones de clases inmutables entre procesos de trabajo, lo que reduce el consumo de memoria de cada proceso.

Resumen

Active OPcache en producción con validate_timestamps=0. Vacíe la caché después de los despliegues mediante opcache_reset() o reiniciando PHP-FPM. Supervise la tasa de aciertos con opcache_get_status().

Comprobación rápida

¿Qué opción de php.ini debe establecerse en 0 en producción para obtener el máximo rendimiento de OPcache?

Preguntas frecuentes

¿La lección «OPcache: almacenamiento en caché de bytecode» es gratis?

Sí — el texto completo de «OPcache: almacenamiento en caché de bytecode» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «OPcache: almacenamiento en caché de bytecode»?

Active y ajuste OPcache para eliminar la sobrecarga de compilar repetidamente los scripts. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «OPcache: almacenamiento en caché de bytecode»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Perfilado de PHP con Xdebug
  2. OPcache: almacenamiento en caché de bytecode
  3. Optimización de consultas de base de datos
  4. Gestión de memoria y consejos de rendimiento
← Volver a PHP Academy