Zend OPcache en PHP 7

Una desventaja importante de PHP es que carga y analiza el script PHP en cada solicitud.
Escrito en texto plano, el código PHP se compila primero en códigos de operación, luego se ejecutan los códigos de operación. Si bien este impacto en el rendimiento puede no ser notable con pequeñas aplicaciones que tienen uno o pocos scripts en total, hace una gran diferencia con plataformas más grandes, como Magento, Drupal, etc.

A partir de PHP 5.5, hay una solución lista para usar para este problema. La extensión Zend OPcache aborda el problema de la compilación repetitiva al almacenar los códigos de operación compilados en la memoria compartida (RAM). Encenderlo o apagarlo es simplemente una cuestión de cambiar el directiva de configuración.
Hay bastantes directivas de configuración, algunas de las cuales nos ayudarán a comenzar:

  • opcache.enable: el valor predeterminado es 1 y se puede cambiar a través de PHP_INI_ALL.
  • opcache.enable_cli: el valor predeterminado es 0 y se puede cambiar a través de PHP_INI_SYSTEM.
  • opcache.memory_consumption: el valor predeterminado es 64 y se puede cambiar a través de PHP_INI_SYSTEM, que define el tamaño de la memoria compartida utilizada por OPcache.
  • opcache.max_accelerated_files: el valor predeterminado es 2000 y se puede cambiar a través de PHP_INI_SYSTEM, que define el número máximo de claves/scripts en la tabla hash de OPcache. Su valor máximo es 1000000.
  • opcache.max_wasted_percentage: el valor predeterminado es 5 y se puede cambiar a través de PHP_INI_SYSTEM, que define el porcentaje máximo de memoria desperdiciada permitido antes de programar un reinicio.

Si bien opcache.enable está marcado como PHP_INI_ALL, usar ini_set() para habilitarlo en tiempo de ejecución no funcionará. Solo deshabilitarlo con ini_set() funcionará.
Aunque completamente automatizado, Zend OPcache también proporciona algunas funciones para que usemos:

  • opcache_compile_file (): esto compila y almacena en caché un script sin ejecutarlo
  • opcache_get_configuration (): Esto recupera el OPcache información de configuración
  • opcache_get_status (): recupera la información de OPcache
  • opcache_invalidate (): esto invalida OPcache
  • opcache_is_script_cached (): Esto nos dice si el script se almacena en caché a través de OPcache
  • opcache_reset (): esto restablece el caché OPcache

Si bien es poco probable que usemos estos métodos por nuestra cuenta, son útiles para las herramientas de utilidad que se ocupan de OPcache por nosotros.

Una cosa a tener en cuenta con OPcache es su posible problema de cache slam. Utilizando las directivas de configuración memory_consumption, max_accelerated_files y max_wasted_percentage, OPcache determina cuándo es el momento de vaciar el caché. Cuando esto sucede, es probable que los servidores con grandes cantidades de tráfico experimenten un problema de cache slam, con muchas solicitudes que generan simultáneamente las mismas entradas de caché. Por lo tanto, debemos tratar de evitar el vaciado frecuente de caché. Para hacerlo, podemos usar la herramienta de monitoreo de caché y ajustar las tres directivas de configuración para adaptarlas al tamaño de nuestra aplicación.

Comparte