<?php
$pageTitle = 'Cómo Solucionar el Error 504 Gateway Timeout en PrestaShop Definitivamente';
$pageDesc  = 'Descubre cómo solucionar el molesto error 504 Gateway Timeout en PrestaShop paso a paso. Optimiza tu servidor y mejora el rendimiento de tu tienda.';
$imageUrl  = 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?auto=format&fit=crop&w=800&q=80';
$basePath  = "../";

include __DIR__ . "/../includes/header.php";
?>

<div class="container layout">
    <main class="article-container">
        <h1 class="article-title"><?php echo htmlspecialchars($pageTitle); ?></h1>
        <div class="article-meta">Categoría: <strong>PrestaShop</strong> | Publicado el 29/09/2026</div>

        <div class="article-featured-image" style="margin: 20px 0; border-radius: 8px; overflow: hidden;">
            <img src="<?php echo htmlspecialchars($imageUrl); ?>" alt="<?php echo htmlspecialchars($pageTitle); ?>" style="width: 100%; height: auto; max-height: 400px; display: block; object-fit: cover;">
        </div>

        <div class="ad-container">
            <div class="ad-label">Anuncio relacionado</div>
            <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9528155186955160" data-ad-slot="3333333333"></ins>
            <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
        </div>

        <div class="article-content">
            <h2>¿Qué es el Error 504 Gateway Timeout en PrestaShop?</h2><p>El error 504 Gateway Timeout ocurre cuando un servidor que actúa como puerta de enlace o proxy no recibe una respuesta a tiempo de otro servidor al intentar cargar una página de tu tienda online en PrestaShop. En el ecosistema de PrestaShop, este fallo suele manifestarse al realizar consultas pesadas en la base de datos, al importar un catálogo grande de productos, o durante la ejecución de tareas pesadas en el backoffice.</p><h2>Principales Causas del Error 504</h2><ul><li>Tiempos de espera (timeouts) configurados de forma demasiado estricta en el servidor web (Nginx o Apache).</li><li>Límites insuficientes de tiempo de ejecución en PHP (<code>max_execution_time</code>).</li><li>Consultas SQL lentas o una base de datos de PrestaShop sobrecargada de datos obsoletos (logs de depuración, estadísticas de carritos, etc.).</li><li>Problemas temporales de conectividad entre el servidor proxy inverso (como Nginx) y el backend (como Apache o PHP-FPM).</li></ul><h2>Método 1: Aumentar el Tiempo de Espera en Nginx y PHP-FPM</h2><p>Si tu servidor utiliza Nginx junto con PHP-FPM, es muy probable que debas ampliar los límites de tiempo de respuesta configurados en los archivos de configuración del servidor.</p><ol><li>Accede a tu servidor mediante SSH con privilegios de administrador.</li><li>Abre el archivo de configuración de tu sitio en Nginx o el archivo global <code>nginx.conf</code>.</li><li>Modifica o añade las siguientes directivas dentro del bloque <code>location ~ \.php$</code>:<br><code>fastcgi_read_timeout 300s;</code><br><code>proxy_read_timeout 300s;</code><br><code>proxy_connect_timeout 300s;</code></li><li>Edita también tu archivo <code>php.ini</code> y localiza la variable <code>max_execution_time</code>, aumentándola a 300 o más:<br><code>max_execution_time = 300</code></li><li>Reinicia los servicios ejecutando <code>sudo systemctl restart nginx</code> y <code>sudo systemctl restart php-fpm</code>.</li></ol><h2>Método 2: Optimizar y Limpiar la Base de Datos desde phpMyAdmin</h2><p>Una base de datos saturada de logs y tablas fragmentadas puede ralentizar las consultas hasta provocar el tiempo de espera agotado.</p><ol><li>Entra a tu panel de control de hosting y abre phpMyAdmin.</li><li>Selecciona la base de datos correspondiente a tu instalación de PrestaShop.</li><li>Busca tablas como <code>ps_connections</code>, <code>ps_connections_source</code>, <code>ps_log</code> o <code>ps_mail</code> que suelen acumular millones de registros inútiles.</li><li>Vacía estas tablas utilizando la sentencia SQL <code>TRUNCATE TABLE nombre_de_tabla;</code> (cuidado de no borrar tablas esenciales de clientes o pedidos).</li><li>Ejecuta la opción de optimizar tabla para liberar espacio y reorganizar los índices.</li></ol><h2>Método 3: Configurar Correctamente los Módulos Pesados</h2><p>Ciertos módulos de marketing, pasarelas de pago o sincronizadores con ERPs realizan peticiones pesadas que superan el tiempo límite establecido.</p><ol><li>Entra al Backoffice de tu PrestaShop y ve a Parámetros Avanzados > Rendimiento.</li><p>Desactiva temporalmente los módulos no nativos que sospeches que generan llamadas AJAX constantes o consultas externas lentas.</p><li>Comprueba si el error desaparece al repetir la acción que lo provocaba.</li><li>Contacta con el desarrollador del módulo para reportar problemas de rendimiento si el error persiste al habilitarlo.</li></ol>
        </div>

        <div class="ad-container">
            <div class="ad-label">Anuncio</div>
            <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-9528155186955160" data-ad-slot="4444444444" data-ad-format="auto" data-full-width-responsive="true"></ins>
            <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
        </div>
    </main>

    <?php include __DIR__ . "/../includes/sidebar.php"; ?>
</div>

<?php include __DIR__ . "/../includes/footer.php"; ?>