¿Cómo puedo habilitar la precarga de opcache en PHP 7.4?


9

Me gustaría habilitar precarga de opcache ( RFC ) en mis servidores de producción usando PHP 7.4. Estoy usando Symfony , pero esto se aplica a todo PHP.


1
No estoy seguro de cuánto reddit.com/r/PHP/comments/e8pgzi/… afectará los planes para usarlo.
Nigel Ren


1
Mira este artículo . También lea el error que publicó Nigel, ya que parece bastante crítico por el momento.
Jeto

Respuestas:


4

Antes que nada debes agregar:

opcache.preload=/path/to/project/preload.php

para usted php.ini

Luego, en su script PHP, debe pasar opcache_compile_file($file);cada archivo que desee precargar.


4

Según la publicación del blog, esto parece ser trivial. Aparentemente, Symfony desde 4.4 genera un script de precarga que debe configurarse en php.ini:

opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php

Hice algunas pruebas en mi entorno local de Docker y así fue como sucedió:

PHP 7.3 sin OPcache (actual)

Requests per second:    8.75 [#/sec] (mean)
Time per request:       114.402 [ms] (mean)

PHP 7.4 sin OPcache

Requests per second:    11.44 [#/sec] (mean)
Time per request:       87.417 [ms] (mean)

PHP 7.4 con OPcache, sin precarga (Apache + modphp)

Requests per second:    30.25 [#/sec] (mean)
Time per request:       33.053 [ms]

PHP 7.4 con OPcache, sin precarga (nginx + php fpm)

Requests per second:    40.00 [#/sec] (mean)

Lamentablemente no pude habilitar la precarga :( Encontré los siguientes errores (tanto en Apache + Mod como en Nginx + FPM):

double free or corruption (!prev)
child pid 17 exit signal Aborted (6), possible coredump (…)

Sin embargo, esta característica se parece a un WIP . Voy a revalidar esta respuesta cuando pueda usar esta cosa de precarga. En general, estoy bastante impresionado, + 30% de rendimiento simplemente actualizando de PHP 7.3a 7.4.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.