Javascript Ajax长轮询问题(网关504)

Javascript Ajax长轮询问题(网关504),javascript,jquery,ajax,Javascript,Jquery,Ajax,好吧,我一直在想办法解决我的问题,现在我空手而归。我有一个AJAX调用,它确实在工作(我可以看到添加到mySQL数据库的行),但是AJAX调用从我收集的数据中超时,因为60秒后我在控制台中看到: Error: Gateway 504 timeout. 即使超时,我也可以看到php脚本确实仍在后台工作,并且仍在向数据库添加行 我确实尝试过增加超时时间并在代码中设置时间限制(0),但仍然没有成功。我认为,基于我的足智多谋,我需要求助于长轮询。这是我修改过的javascript,试图实现长轮询 $(

好吧,我一直在想办法解决我的问题,现在我空手而归。我有一个AJAX调用,它确实在工作(我可以看到添加到mySQL数据库的行),但是AJAX调用从我收集的数据中超时,因为60秒后我在控制台中看到:

Error: Gateway 504 timeout.
即使超时,我也可以看到php脚本确实仍在后台工作,并且仍在向数据库添加行

我确实尝试过增加超时时间并在代码中设置时间限制(0),但仍然没有成功。我认为,基于我的足智多谋,我需要求助于长轮询。这是我修改过的javascript,试图实现长轮询

$("#scan_library_submit").on('click', function(e){           
        var media_dir = $("#media_dir").val();
        var media_ext = document.forms['scan_library_form'].elements[ 'media_ext[]' ];
       if( media_dir =='' || media_ext == '' )
          {
          document.getElementById("scan_library_response").innerHTML = '<font color="red"><i class="fas fa-times"></i> All Fields Required.</font>';
          return
          }   
    this.innerHTML = '<i class="fa fa-spinner fa-spin"></i> Scanning...';
    //ajax call to scan library
    (function scan_media_library(){
        setTimeout(function(){
          $.ajax({
            url: 'ajax/library_scan.php',
            type : "POST",
            dataType : 'json',
            data : $('#scan_library_form').serialize(),
            success : function(result) {
                  if(result.code === 404){
                  document.getElementById("scan_library_response").innerHTML = result.msg;
                  return;
                  }else if(result.code === 200) {
                  document.getElementById("scan_library_response").innerHTML = result.msg;
                  document.getElementById("scan_library_submit").innerHTML='<i class="fas fa-check"></i> Complete!';
                  setInterval('window.location.reload()', 9000);
                  return;
                  }else{
                  scan_media_library();
            }}
        })
        }, 3000);
    })();
  });
$(“#扫描#u库_提交”)。在('click',函数(e){
var media_dir=$(“#media_dir”).val();
var media_ext=document.forms['scan_library_form']。elements['media_ext[]];
如果(媒体目录=“”| |媒体外部=“”)
{
document.getElementById(“scan_library_response”).innerHTML=“所有必需字段”;
返回
}   
this.innerHTML='Scanning…';
//对扫描库的ajax调用
(功能扫描媒体库(){
setTimeout(函数(){
$.ajax({
url:'ajax/library_scan.php',
类型:“POST”,
数据类型:“json”,
数据:$('#扫描库\表单')。序列化(),
成功:功能(结果){
如果(result.code==404){
document.getElementById(“扫描库响应”).innerHTML=result.msg;
返回;
}else if(result.code==200){
document.getElementById(“扫描库响应”).innerHTML=result.msg;
document.getElementById(“扫描库提交”).innerHTML='Complete!';
setInterval('window.location.reload()',9000);
返回;
}否则{
扫描媒体库();
}}
})
}, 3000);
})();
});
我仍然得到错误网关504…:(


另外,我想在脚本运行时更新一个
;基本上,这个脚本是在向mysql表添加数据,因此它可以定期ping表中的行数。这是否可能实现?如果可以…如何实现?请链接到适当的教程,这是一个学习经验体验!当AJAX请求运行时,它可以每3-5秒ping一次表以查看添加了多少行,然后用结果刷新一个

我留下了注释,我认为真正的问题是什么,但您也可以在AJAX中设置超时:

$(“#扫描#u库_提交”)。在('click',函数(e){
var media_dir=$(“#media_dir”).val();
var media_ext=document.forms['scan_library_form']。elements['media_ext[]];
如果(媒体目录=“”| |媒体外部=“”){
document.getElementById(“scan_library_response”).innerHTML=“所有必需字段”;
返回
}
this.innerHTML='Scanning…';
$.ajax({
url:'ajax/library_scan.php',
类型:“POST”,
数据类型:“json”,
数据:$('#扫描库\表单')。序列化(),
成功:功能(结果){
控制台日志(结果);
警报(result.msg);
回调(result.code);
如果(result.code==404){
document.getElementById(“扫描库响应”).innerHTML=result.msg;
返回
}
否则{
document.getElementById(“扫描库响应”).innerHTML=result.msg;
}
},
错误:函数(xhr、resp、text){
日志(xhr,resp,text);
},
超时:90000
})
this.innerHTML='Complete!';

});
你的php脚本是什么,可能只有mysqli查询在工作;我仍然会检查php.ini并设置max_execution_timemable replic,感谢你的帮助。不幸的是,这不起作用。我正在查看长时间的民意测验…这能起作用吗?或者我需要做些其他事情来避免ajax超时…?@nicholas,很可能是这样的我在原问题中的答案是什么