Come posso abilitare il precaricamento di opcache in PHP 7.4?


9

Vorrei abilitare il precaricamento opcache ( RFC ) sui miei server di produzione usando PHP 7.4. Sto usando Symfony , ma questo vale per tutto il PHP.


1
Non sono sicuro di quanto reddit.com/r/PHP/comments/e8pgzi/… influenzerà i piani per l'utilizzo.
Nigel Ren,


1
Controlla questo articolo . Leggi anche quel bug che Nigel ha pubblicato, poiché per il momento sembra abbastanza critico.
Jeto,

Risposte:


4

Prima di tutto dovresti aggiungere:

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

alla tua php.ini

Quindi nel tuo script PHP dovresti passare opcache_compile_file($file);ogni file che vuoi precaricare.


4

Secondo il post del blog questo sembra essere banale. Apparentemente Symfony dal 4.4 genera uno script di precarico che deve essere impostato in php.ini:

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

Ho fatto alcuni test nel mio ambiente Docker locale ed è così che è andata:

PHP 7.3 senza OPcache (corrente)

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

PHP 7.4 senza OPcache

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

PHP 7.4 con OPcache, senza precaricamento (Apache + modphp)

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

PHP 7.4 con OPcache, senza precaricamento (nginx + php fpm)

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

Sfortunatamente non sono stato in grado di abilitare il precaricamento :( Ho riscontrato i seguenti errori (sia in Apache + Mod sia in Nginx + FPM):

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

Questa funzione sembra però un WIP . Ho intenzione di riconvalidare questa risposta quando sarò in grado di utilizzare questa cosa di precaricamento. Nel complesso, sono abbastanza impressionato, + 30% di prestazioni semplicemente aggiornando da PHP 7.3a 7.4.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.