Як я можу ввімкнути попереднє завантаження в програмі PHP 7.4?


9

Я б хотів увімкнути попереднє завантаження opcache ( RFC ) на своїх виробничих серверах за допомогою PHP 7.4. Я використовую Symfony , але це стосується всіх PHP.


1
Не впевнений, наскільки reddit.com/r/PHP/comments/e8pgzi/… вплине на будь-які плани щодо його використання.
Найджел Рен


1
Перевірте цю статтю . Читайте також про повідомлення про помилку Найджела, оскільки це здається досить критичним на даний момент.
Jeto

Відповіді:


4

Перш за все слід додати:

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

твоєму php.ini

Потім у вашому PHP-скрипті ви повинні передати opcache_compile_file($file);кожен файл, який ви хочете попередньо завантажити.


4

Згідно з повідомленням у блозі, це видається тривіальним. Мабуть, Symfony з 4.4 створює сценарій попереднього завантаження, який повинен бути встановлений у php.ini:

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

Я робив кілька тестів у моєму локальному середовищі Докер, і ось як це пішло:

PHP 7.3 без OPcache (поточний)

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

PHP 7.4 без OPcache

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

PHP 7.4 з OPcache, без попередньої завантаження (Apache + modphp)

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

PHP 7.4 з OPcache, без попередньої завантаження (nginx + php fpm)

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

На жаль, я не зміг увімкнути попередню завантаження :( у мене виникли такі помилки (і в Apache + Mod, і в Nginx + FPM):

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

Ця функція схожа на WIP . Я збираюсь повторно підтвердити цю відповідь, коли зможу використовувати цю річ, яку попередньо завантажувати. В цілому я дуже вражений, + 30% продуктивності лише завдяки переходу на PHP 7.3до 7.4.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.