PHP 8 y OPcache: configuración recomendada para PrestaShop
Un PHP mal ajustado hace lento al mejor servidor. Estos son los valores que usamos como punto de partida en tiendas PrestaShop 8 y 9.
PrestaShop es una aplicación PHP grande: miles de ficheros que se cargan en cada petición. Por eso la configuración de PHP, y en particular de OPcache, tiene un impacto enorme en la velocidad.
Qué versión de PHP
- PrestaShop 9: PHP 8.1 a 8.4. Recomendamos 8.3, que es estable y rápido.
- PrestaShop 8: PHP 7.2 a 8.1. Usa 8.1 si tus módulos lo soportan.
Antes de subir de versión, prueba en una copia: módulos antiguos pueden fallar con PHP 8 por funciones eliminadas o tipos más estrictos.
OPcache: la configuración que más 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: una tienda con muchos módulos supera fácilmente los 20.000 ficheros PHP. Si el valor es bajo, OPcache se llena y deja de cachear.memory_consumption: 256 MB es un buen punto de partida. Comprueba conopcache_get_status()que no se agota.revalidate_freq: cada cuántos segundos comprueba si un fichero cambió. En producción, 60 está bien; tras un despliegue, vacía OPcache o espera ese tiempo.
Otros 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 es el culpable clásico de formularios que «no guardan todo»: con productos de muchas combinaciones o traducciones grandes se envían miles de campos, y PHP descarta los que pasan del límite sin avisar.
php.ini, en un .user.ini en la raíz o desde el panel (cPanel, Plesk). En algunos alojamientos el .user.ini de la raíz es el que manda y los cambios tardan unos minutos en aplicarse.Cómo comprobar lo que realmente se aplica
PrestaShop muestra la configuración de PHP en Parámetros avanzados > Información. Y si tienes SSH, php -i | grep opcache te dice los valores de la línea de comandos, que pueden no coincidir con los del servidor web: compara los dos.