php - presente - zend opcache extension is not present glpi
¿Cómo usar PHP OPCache? (5)
PHP 5.5 ha sido lanzado y presenta un nuevo módulo de almacenamiento en caché de código llamado OPCache, pero no parece haber documentación para ello.
Entonces, ¿dónde está la documentación y cómo uso OPcache?
Instalación
OpCache está compilado por defecto en PHP5.5 +. Sin embargo, está deshabilitado por defecto. Para comenzar a utilizar OpCache en PHP5.5 +, primero deberá habilitarlo. Para hacer esto deberías hacer lo siguiente.
Agregue la siguiente línea a su php.ini
:
zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:/path/to/php_opcache.dll (win)
Tenga en cuenta que cuando la ruta contiene espacios, debe incluirla entre comillas:
zend_extension="C:/Program Files/PHP5.5/ext/php_opcache.dll"
También tenga en cuenta que tendrá que usar la directiva de zend_ extension
lugar de la directiva de zend_ extension
"normal" porque afecta al motor Zend real (es decir, lo que ejecuta PHP).
Uso
Actualmente hay cuatro funciones que puedes usar:
opcache_get_configuration()
:
Devuelve una matriz 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á una matriz con información sobre el estado actual de la memoria caché. Esta información incluirá cosas como: el estado en que se encuentra la memoria caché (habilitado, reinicio, etc.), el uso de la memoria, los aciertos, las fallas y otra información más útil. También contendrá los scripts en caché.
var_dump(opcache_get_status());
opcache_reset()
:
Restablece todo el caché. Lo que significa que todos los scripts en caché posibles serán analizados nuevamente en la próxima visita.
opcache_reset();
opcache_invalidate()
:
Invalida un script en caché específico. Lo que significa que el guión se analizará de nuevo en la próxima visita.
opcache_invalidate(''/path/to/script/to/invalidate.php'', true);
Mantenimiento e informes
Hay algunos GUI creados 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.
caracteristicas:
- Estado de opcache
- Configuracion opcache
- Estadísticas de OpCache
- Reinicio de opcache
- Resumen de scripts en caché
- Invalidación de scripts en caché
- Plurilingüe
- Soporte de dispositivo móvil
- Gráficos brillantes
Capturas de pantalla:
URL: https://github.com/PeeHaa/OpCacheGUI
estado de caché
caracteristicas:
- Estado de opcache
- Configuracion opcache
- Estadísticas de OpCache
- Resumen de scripts en caché
- Archivo único
Captura de pantalla:
URL: https://github.com/rlerdorf/opcache-status
opcache-gui
caracteristicas:
- Estado de opcache
- Configuracion opcache
- Estadísticas de OpCache
- Reinicio de opcache
- Resumen de scripts en caché
- Invalidación de scripts en caché
- Actualización automática
Captura de pantalla:
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 de PHP, ya que ninguno de los dos afecta a cómo se escribe el código.
Sin embargo, significa que si actualmente está utilizando APC para almacenar otros datos (a través de la función apc_store()
) no podrá hacerlo si decide usar OPCache.
Necesitará usar otra biblioteca como APCu o Yac que almacenan datos en la memoria PHP compartida, o cambian para usar algo como memcached, que almacena datos en la memoria en un proceso separado de PHP.
Además, OPcache no tiene equivalente del medidor de progreso de carga presente en APC. En su lugar, debe utilizar el progreso de carga de sesión .
Configuraciones para OPcache
La documentación para OPcache se puede encontrar here con todas las opciones de configuración enumeradas here . 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 usas cualquier biblioteca o código que use anotaciones de código, debes 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. La desactivación de "Comentarios de documentos" puede romper algunas aplicaciones y marcos existentes (por ejemplo, Doctrine, ZF2, PHPUnit)
Con PHP 5.6 en Amazon Linux (debería ser el mismo en RedHat o CentOS):
yum install php56-opcache
y luego reiniciar apache.
Encontré esto al configurar moodle. Agregué las siguientes líneas en el archivo php.ini.
zend_extension=C:/xampp/php/ext/php_opcache.dll
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487
; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps
extension=C:/xampp/php/ext/php_intl.dll
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING
Voy a bajar mis dos centavos por lo que uso opcache.
He hecho un amplio marco 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% 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 a un 25-30% de tiempo de CPU durante unos 25 segundos y nunca pasa el 25% de uso de CPU.
Total time taken: 26490 milliseconds(26 seconds)
He hecho un archivo de la lista negra de opcache para deshabilitar el almacenamiento en caché de todo, excepto el marco, que es todo estático y no necesita cambiar de funcionalidad. Elijo explícitamente solo los archivos de marco para poder desarrollarlos sin preocuparme por volver a cargar / validar los archivos de caché. Tener todo en caché ahorra un segundo en el total de las solicitudes 25546 milliseconds
Esto expande significativamente la cantidad de datos / solicitudes que puedo manejar por segundo sin que el servidor incluso haga sudar.