Saltar al contenido

¿Cómo usar PHP OPCache?

Este grupo redactor ha pasado mucho tiempo buscando la solución a tus interrogantes, te compartimos la soluciones de modo que esperamos servirte de gran ayuda.

Solución:

Instalación

OpCache está compilado por defecto en PHP5.5 +. Sin embargo, está deshabilitado de forma predeterminada. Para comenzar a usar OpCache en PHP5.5 +, primero tendrá que habilitarlo. Para hacer esto, tendría que hacer lo siguiente.

Agregue la siguiente línea a su php.ini:

zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:pathtophp_opcache.dll (win)

Tenga en cuenta que cuando la ruta contiene espacios, debe envolverla entre comillas:

zend_extension="C:Program FilesPHP5.5extphp_opcache.dll"

También tenga en cuenta que tendrá que utilizar el zend_extension directiva en lugar de la “normal” extension directiva porque afecta al motor Zend real (es decir, lo que ejecuta PHP).

Uso

Actualmente hay cuatro funciones que puede utilizar:

opcache_get_configuration():

Devuelve un array que contiene la configuración utilizada actualmente que utiliza OpCache. Esto incluye todas las configuraciones de ini, así como la información de la versión y los archivos de la lista negra.

var_dump(opcache_get_configuration());

opcache_get_status():

Esto devolverá un array con información sobre el estado actual de la caché. Esta información incluirá cosas como: el estado en el que se encuentra el caché (habilitado, reiniciando, lleno, etc.), el uso de memoria, aciertos, errores y más información útil. También contendrá los scripts almacenados en caché.

var_dump(opcache_get_status());

opcache_reset():

Restablece todo el caché. Lo que significa que todos los posibles scripts almacenados en caché se analizarán nuevamente en la próxima visita.

opcache_reset();

opcache_invalidate():

Invalida una secuencia de comandos en caché específica. Lo que significa que el script se analizará nuevamente en la próxima visita.

opcache_invalidate('/path/to/script/to/invalidate.php', true);

Mantenimiento e informes

Hay algunas GUI creadas para ayudar a mantener OpCache y generar informes útiles. Estas herramientas aprovechan las funciones anteriores.

OpCacheGUI

Descargo de responsabilidad soy el autor de este proyecto

Características:

  • Estado de OpCache
  • Configuración de OpCache
  • Estadísticas de OpCache
  • Restablecimiento de OpCache
  • Descripción general de los scripts almacenados en caché
  • Invalidación de scripts en caché
  • Plurilingüe
  • Soporte para dispositivos móviles
  • Gráficos brillantes

Capturas de pantalla:

estado

scripts en caché

graficas

mobilr

URL: https://github.com/PeeHaa/OpCacheGUI

estado de opcache

Características:

  • Estado de OpCache
  • Configuración de OpCache
  • Estadísticas de OpCache
  • Descripción general de los scripts almacenados en caché
  • Fila india

Captura de pantalla:

estado

URL: https://github.com/rlerdorf/opcache-status

opcache-gui

Características:

  • Estado de OpCache
  • Configuración de OpCache
  • Estadísticas de OpCache
  • Restablecimiento de OpCache
  • Descripción general de los scripts almacenados en caché
  • Invalidación de scripts en caché
  • Actualización automática

Captura de pantalla:

opcache-gui-descripción general

URL: https://github.com/amnuts/opcache-gui

OPcache reemplaza a APC

Debido a que OPcache está diseñado para reemplazar el módulo APC, no es posible ejecutarlos en paralelo en PHP. Esto está bien para almacenar en caché el código de operación PHP, ya que ninguno de los dos afecta la forma en que escribe el código.

Sin embargo, significa que si actualmente está utilizando APC para almacenar otros datos (a través del apc_store() función) no podrá hacer eso si decide utilizar OPCache.

Deberá usar otra biblioteca, como APCu o Yac, que almacenan datos en la memoria PHP compartida, o cambiar para usar algo como memcached, que almacena datos en la memoria en un proceso separado de PHP.

Además, OPcache no tiene equivalente al medidor de progreso de carga presente en APC. En su lugar, debe utilizar el Progreso de carga de la sesión.

Configuración de OPcache

La documentación de OPcache se puede encontrar aquí con todas las opciones de configuración enumeradas aquí. Los ajustes recomendados son:

; Sets how much memory to use
opcache.memory_consumption=128

;Sets how much memory should be used by OPcache for storing internal strings 
;(e.g. classnames and the files they are contained in)
opcache.interned_strings_buffer=8

; The maximum number of files OPcache will cache
opcache.max_accelerated_files=4000

;How often (in seconds) to check file timestamps for changes to the shared
;memory storage allocation.
opcache.revalidate_freq=60

;If enabled, a fast shutdown sequence is used for the accelerated code
;The fast shutdown sequence doesn't free each allocated block, but lets
;the Zend Engine Memory Manager do the work.
opcache.fast_shutdown=1

;Enables the OPcache for the CLI version of PHP.
opcache.enable_cli=1

Si usa cualquier biblioteca o código que use anotaciones de código, debe habilitar guardar comentarios:

opcache.save_comments=1

Si está deshabilitado, todos los comentarios de PHPDoc se eliminan del código para reducir el tamaño del código optimizado. Deshabilitar “Comentarios de documentos” puede romper algunas aplicaciones y marcos existentes (por ejemplo, Doctrine, ZF2, PHPUnit)

Voy a gastar mis dos centavos por lo que uso opcache.

He creado un marco extenso con muchos campos y métodos de validación y enumeraciones para poder hablar con mi base de datos.

Sin opcache

Cuando uso este script sin opcache y envío 9000 solicitudes en 2.8 segundos al servidor apache, alcanza un máximo de 90-100% de la CPU durante 70-80 segundos hasta que alcanza todas las solicitudes.

Total time taken: 76085 milliseconds(76 seconds)

Con opcache habilitado

Con opcache habilitado, se ejecuta al 25-30% del tiempo de CPU durante unos 25 segundos y nunca supera el 25% de uso de la CPU.

Total time taken: 26490 milliseconds(26 seconds)

He creado un archivo de lista negra de opcache para deshabilitar el almacenamiento en caché de todo, excepto el marco, que es todo static y no necesita cambios de funcionalidad. Elijo explícitamente solo los archivos del marco para poder desarrollar sin preocuparme por volver a cargar / validar los archivos de caché. Tener todo en caché ahorra un segundo en el total de solicitudes 25546 milliseconds

Esto expande significativamente la cantidad de datos / solicitudes que puedo manejar por segundo sin que el servidor ni siquiera se ponga a sudar.

Si sostienes alguna cuestión y capacidad de prosperar nuestro división te proponemos escribir una observación y con placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *