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:
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:
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:
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.