PHP 8 e OPcache: configurazione consigliata per PrestaShop
Un PHP mal regolato rende lento anche il server migliore. Questi sono i valori che usiamo come punto di partenza nei negozi PrestaShop 8 e 9.
PrestaShop è un'applicazione PHP grande: migliaia di file che si caricano a ogni richiesta. Per questo la configurazione di PHP, e in particolare di OPcache, ha un impatto enorme sulla velocità.
Quale versione di PHP
- PrestaShop 9: da PHP 8.1 a 8.4. Consigliamo la 8.3, stabile e veloce.
- PrestaShop 8: da PHP 7.2 a 8.1. Usa la 8.1 se i tuoi moduli la supportano.
Prima di cambiare versione, prova su una copia: i moduli vecchi possono fallire con PHP 8 per funzioni eliminate o tipi più rigidi.
OPcache: la configurazione che conta di più
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=40000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
max_accelerated_files: un negozio con molti moduli supera facilmente i 20.000 file PHP. Se il valore è basso, OPcache si riempie e smette di mettere in cache.memory_consumption: 256 MB è un buon punto di partenza. Verifica conopcache_get_status()che non si esaurisca.revalidate_freq: ogni quanti secondi controlla se un file è cambiato. In produzione, 60 va bene; dopo un deploy, svuota OPcache o aspetta quel tempo.
Altri parametri
memory_limit=512M
max_execution_time=300
max_input_vars=10000
upload_max_filesize=64M
post_max_size=64M
realpath_cache_size=4096K
realpath_cache_ttl=600
max_input_vars è il colpevole classico dei moduli che «non salvano tutto»: con prodotti con molte combinazioni o traduzioni grandi si inviano migliaia di campi, e PHP scarta quelli oltre il limite senza avvisare.
php.ini, in un .user.ini nella root o dal pannello (cPanel, Plesk). In alcuni hosting è il .user.ini della root a comandare e le modifiche impiegano qualche minuto ad applicarsi.Come verificare cosa si applica davvero
PrestaShop mostra la configurazione di PHP in Parametri avanzati > Informazioni. E se hai SSH, php -i | grep opcache ti dà i valori della riga di comando, che possono non coincidere con quelli del server web: confronta i due.