PHP 8 e OPcache: configuração recomendada para PrestaShop
Um PHP mal afinado torna lento o melhor servidor. Estes são os valores que usamos como ponto de partida em lojas PrestaShop 8 e 9.
O PrestaShop é uma aplicação PHP grande: milhares de ficheiros carregados em cada pedido. Por isso, a configuração do PHP, e em particular do OPcache, tem um impacto enorme na velocidade.
Que versão de PHP
- PrestaShop 9: PHP 8.1 a 8.4. Recomendamos o 8.3, que é estável e rápido.
- PrestaShop 8: PHP 7.2 a 8.1. Use o 8.1 se os seus módulos o suportarem.
Antes de subir de versão, teste numa cópia: módulos antigos podem falhar com o PHP 8 por causa de funções eliminadas ou tipos mais rigorosos.
OPcache: a configuração que mais importa
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: uma loja com muitos módulos ultrapassa facilmente os 20.000 ficheiros PHP. Se o valor for baixo, o OPcache enche e deixa de fazer cache.memory_consumption: 256 MB é um bom ponto de partida. Confirme comopcache_get_status()que não se esgota.revalidate_freq: de quantos em quantos segundos verifica se um ficheiro mudou. Em produção, 60 está bem; depois de uma implementação, limpe o OPcache ou espere esse tempo.
Outros parâmetros
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 é o culpado clássico dos formulários que «não guardam tudo»: com produtos de muitas combinações ou traduções grandes são enviados milhares de campos, e o PHP descarta os que passam do limite sem avisar.
php.ini, num .user.ini na raiz ou a partir do painel (cPanel, Plesk). Em alguns alojamentos é o .user.ini da raiz que manda e as alterações demoram alguns minutos a aplicar-se.Como verificar o que realmente se aplica
O PrestaShop mostra a configuração do PHP em Parâmetros avançados > Informação. E, se tiver SSH, php -i | grep opcache indica-lhe os valores da linha de comandos, que podem não coincidir com os do servidor web: compare os dois.