ajax 调用中的 504 GATEWAY_TIMEOUT

hri*_*shi 7 javascript ajax

我有 ajax 调用,我处理大数据,然后在 ajax 成功时重新加载页面。Ajax 调用是

        $.ajax({
            type:'POST',
            cache:false,
            async:false,
            url: 'URL',
            data: "",
            timeout:0,
            beforeSend:function(msgg){   
                $('#loading').show();
            },
            success: function(data){
                if(data == "success")
                {
                    setTimeout(function(){
                        $('#loading').hide();
                        window.location.reload();
                    },5000);
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

但它得到 504 GATEWAY_TIMEOUT 并且 ajax 调用永远不会成功。我需要手动刷新。

Gab*_* Dj 2

建议进行更多短调用来检查状态/检索数据。

如果上述方法无法实现,则可以采用以下替代方案:

注意:不建议将此解决方案用于生产使用或高流量场景,请确保此操作在隔离服务器上执行。

如果使用 Apache Web Server 2.4,则该TimeOut指令默认设置为 60 秒。

有关更多详细信息,请参阅这篇文章

Web 服务器只会保持连接打开 60 秒,无论max_execution_time

php.ini中max_execution_time的 php.ini 设置了 php 的执行时间,而 ApacheTimeOut指令则设置了最大连接时间。

例子:

  • 如果 php max_execution_time是 120 秒,但TimeOut是 30 秒 - 你会得到 504 错误
  • 如果 php max_execution_time为 120 秒,但超时为 300 秒 - 您的脚本将执行最多 120 秒,但您的连接可以保持活动状态 300 秒

如果您没有从 php 设置任何响应代码,如果一切正常,PHP 将返回 200,如果发生错误,则返回 500。

当您收到意外的 HTTP 响应代码时,最好也留意 Web 服务器。