Está en la página 1de 13

Inicio Libros Tutoriales Eventos Foro Buscar

La nueva extensin OPcache de


PHP 5.5
PHP es un lenguaje de programacin interpretado, lo que significa que cada vez que se ejecuta
un archivo PHP, primero debe compilarse. Si un archivo no cambia con frecuencia, resulta
absurdo perder el tiempo compilando una y otra vez un archivo que no ha cambiado.

Por ese motivo, hace muchos aos surgieron sistemas de cach como APC que guardan los
archivos compilados y los utilizan mientras el archivo original no cambie. Si activas APC es
fcil multiplicar el rendimiento de la aplicacin entre 2 y 10 veces sin tocar una sola lnea de
cdigo.

La versin 5.5 de PHP introduce una nueva cach llamada OPcache y que est destinada a
reemplazar a APC. En realidad, OPcache es el nuevo nombre del producto Zend Optimizer+ que
la empresa Zend lleva aos utilizando en sus servicios. Esto significa que OPcache es un
producto maduro y probado en miles de servidores de todo tipo. Adems, OPcache es hasta
un 20% ms rpido que APC en muchas pruebas de rendimiento con aplicaciones PHP tpicas
(ver pruebas de rendimiento).
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Instalando la extensin OPcache
Si utilizas PHP 5.5, OPcache ya est instalado y configurado. Si utilizas PHP 5.2, 5.3 o 5.4,
puedes emplear el paquete ZendOpcache de PECL correspondiente a tu versin.

Si ya la tienes instalada y no te aparece dentro de las extensiones activadas, puede que tengas
que aadir o descomentar la siguiente lnea en tu archivo php.ini :

; en servidores Linux y Mac


zend_extension=/ruta/hasta/la/librera/opcache.so

; en servidores Windows
zend_extension=C:\ruta\hasta\el\archivo\php_opcache.dll

Si adems de OPcache utilizas la extensin Xdebug, asegrate de cargar primero la extensin


OPcache dentro de tu archivo de configuracin.

Configurando la extensin OPcache


El manual oficial de PHP recomienda la siguiente configuracin para la extensin OPcache:

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

La siguiente tabla explica cada una de estas opciones y tambin indica su valor por defecto:

Valor
Opcin Descripcin
inicial

Activa la extensin. Cambia su valor a 0


opcache.enable 1
para desactivar OPcache

Activa OPcache cuando se ejecuta PHP en la


opcache.enable_cli 0
lnea de comandos

Cantidad de memoria en MB que puede


opcache.memory_consumption 64
consumir la cach de OPcache

Cantidad de memoria en MB utilizada para


guardar cadenas de texto que se pueden
opcache.interned_strings_buffer 4
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
guardar cadenas de texto que se pueden
opcache.interned_strings_buffer 4
calcular en tiempo de compilacin en vez
de ejecucin

Nmero mximo de archivos que se


opcache.max_accelerated_files 2000 compilan. El valor debe estar entre 200 y
100.000

Cada cuantos segundos se comprueba si un


archivo compilado ha cambiado. Si el valor
opcache.revalidate_freq 2 es 0 , se comprueba en cada peticin. Para
desactivar esta comprobacin, utiliza la
opcin opcache.validate_timestamps

Si se activa, la extensin OPcache no libera


la memoria ocupada, sino que delega esa
tarea en el gestor de memoria del motor
opcache.fast_shutdown 0
Zend de PHP. Activar esta opcin mejora el
rendimiento, pero la memoria se reserva
durante ms tiempo

Si comparas la tabla anterior (que muestra los valores por defecto de OPcache) con la
configuracin que recomiendan en el manual oficial de PHP (mostrada anteriormente), vers
que la configuracin recomendada es ms apropiada para aplicaciones PHP complejas, como
por ejemplo las que utilizan frameworks como Symfony y Zend.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Al margen de las recomendaciones anteriores, la mejor configuracin siempre es la que se
ajusta mejor a tu servidor y tus aplicaciones. No olvides probar diferentes valores para cada
opcin de configuracin y analiza las mejoras o prdidas de rendimiento que consigues con
cada cambio. As conseguirs llegar a la configuracin ideal para tu servidor.

Configuracin avanzada
La extensin OPcache tiene muchas otras opciones que puedes configurar. Para aquellos
programadores que utilizan frameworks como Symfony y Zend o libreras como Doctrine2, la
opcin opcache.save_comments es realmente importante.

El valor por defecto de esta opcin es 1 , lo que significa que se mantienen todos los
comentarios del cdigo fuente de los archivos que se compilan. Si cambias su valor a 0 , todos
los comentarios se eliminan, lo que mejora el rendimiento y reduce significativamente el
tamao de los archivos compilados.

El problema es que si eliminas los comentarios, es posible que ests rompiendo el cdigo de
Symfony, Doctrine, PHPUnit y muchas otras aplicaciones que utilizan unos comentarios
especiales llamados anotaciones para modificar el comportamiento del cdigo.

As que si utilizas Symfony, Doctrine, Zend Framework o PHPUnit, asegrate de tener la


opcin opcache.save_comments=1 o tu aplicacin dejar de funcionar.
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Otra opcin muy importante es opcache.enable_file_override , cuyo valor inicial es 0 . Si
cambias su valor a 1 , cada vez que en tu aplicacin ejecutes las funciones file_exists() ,
is_file() y is_readable() , se comprueba primero si el archivo que pasas como argumento
a las funciones anteriores ha sido cacheado. Esta comprobacin puede mejorar el
rendimiento, pero a cambio corres el riesgo de estar comprobando archivos cacheados que ya
no existen o han cambiado.

La siguiente tabla recoge el resto de opciones disponibles en OPcache. A menos que sepas
muy bien lo que ests haciendo, es mejor que no modifiques el valor de estas opciones:

Valor
Opcin Descripcin
inicial

Porcentaje mximo de memoria


opcache.max_wasted_percentage 5 desperdiciada que se tolera antes de
forzar un reinicio de OPcache

Si se activa, OPcache aade el


directorio al nombre de cada archivo
opcache.use_cwd 1 que cachea, por lo que se reducen las
posibles colisiones entre archivos con
el mismo nombre

Si se activa, los archivos cacheados se


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Si se activa, los archivos cacheados se
comprueban peridicamente para ver
si han cambiado. Si se desactiva el
opcache.validate_timestamps 1 rendimiento aumenta muchsmo, pero
a cambio debes reiniciar el servidor
web o borrar la cach a mano cada vez
que cambies un archivo

Los archivos cacheados con el mismo


nombre y el mismo include_path se
opcache.revalidate_path 0 reutilizan (puede haber problemas con
archivos con el mismo nombre pero
distinta localizacin)

Si se desactiva, los comentarios del


cdigo fuente no se cargan, aunque los
opcache.load_comments 1
archivos cacheados mantengan esos
comentarios

Su formato es el de una mscara de


opcache.optimization_level 0xffffffff bits que indica cules de las diferentes
pasadas de OPcache se ejecutan

Opcin vlida slo para PHP 5.2 y qu


opcache.inherited_hack 1 evita un bug relacionado con la
herencia de clases
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Activa esta opcin si se producen
opcache.dups_fix 0
errores de tipo "Cannot redeclare class"

Ruta donde se encuentra el archivo que


indica qu archivos no se deben
opcache.blacklist_filename '' cachear (puedes indicar directorios
enteros e incluso nombres de archivos
con asteriscos. Ej: *Repositroy.php )

Mximo tamao de archivo en bytes


opcache.max_file_size 0 que se puede guardar en la cach. El
valor 0 indica que no hay lmites

Si es distinto de 0 la consistencia de la
opcache.consistency_checks 0 cach se comprueba cada N peticiones,
donde N es el valor de esta opcin

Durancin en segundos del tiempo que


opcache.force_restart_timeout 180 se espera hasta reiniciar OPcache en
caso de que la cach no responda

Ruta del archivo donde se registrarn


opcache.error_log ''
los errores que se produzcan

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Mximo nivel de errores que se
guardan en el log. Por defecto,
opcache.log_verbosity_level 1
solamente los errores de tipo fatal y
error

No toques esta opcin si no sabes lo


que ests haciendo. Esta opcin te
opcache.preferred_memory_model '' permite elegir el tipo de memoria a
utilizar entre los siguientes valores:
mmap , shm , posix y win32

Opcin reservada para la depuracin


opcache.protect_memory 0
interna de OPcache

Utilizada solamente para indicar la


opcache.mmap_base null base de los segmentos de memoria
compartida en Windows

Utilizando la configuracin de APC en OPcache


Si ests acostumbrado a utilizar la cach APC, la siguiente tabla muestra el equivalente en
OPcache de las opciones de configuracin ms habituales de APC:

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
APC OPcache

apc.enabled=1 opcache.enable=1

apc.shm_segments=1 y
opcache.memory_consumption=128
apc.shm_size=128M

apc.num_files_hint=4000 opcache.max_accelerated_files=4000

apc.stat=1 opcache.validate_timestamps=1

apc.max_file_size=2M opcache.max_file_size=2

apc.filters="/var/www/apc.php" opcache.blacklist_filename="/var/www/opcache.txt"

Funciones de OPcache
La extensin OPcache incluye dos funciones muy tiles cuando se utiliza la cach en el
servidor de produccin. La primera funcin es opcache_reset() que no admite parmetros y
devuelve como resultado un valor booleano. El propsito de esta funcin es borrar toda la
cach de OPcache (equivale a al funcin apc_clear_cache() ).

Si utilizas la opcin opcache.validate_timestamps=0 e instalas una nueva versin de tu


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
aplicacin en el servidor, los cambios no se tendrn en cuenta hasta que caduquen los
archivos cacheados. La solucin ms drstica suele ser reiniciar el servidor, pero con la
funcin opcache_reset() puedes obtener el mismo resultado de forma ms elegante.

La otra opcin definida por OPcache es opcache_invalidate() , que no borra toda la


memoria cach sino un nico archivo cacheado:

// borra el archivo 'index.php' de la cach solamente si es ms


// nuevo que el archivo 'index.php' cacheado
opcache_invalidate('index.php');

// borra el archivo 'index.php' de la cach (sin importar


// su fecha de modificacin)
opcache_invalidate('index.php', true);

Comentarios

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Fecha de publicacin
2 de julio de 2013

ETIQUETAS POPULARES

composer css diseo html javascript php programacin sistemas symfony

SUSCRBETE GRATIS

RSS Todos los tutoriales

RSS Tutoriales de diseo

RSS Tutoriales de programacin

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com