【问题标题】:ajax request returns "error 500", php script still workingajax 请求返回“错误 500”,php 脚本仍在工作
【发布时间】:2015-08-15 03:51:18
【问题描述】:

事情是,用户单击一个按钮,它会启动一个 AJAX 请求(不是那么重要)。 这个 ajax 请求调用一个 php 脚本,该脚本下载并随后上传一个大文件(php 脚本应该运行大约 4 分钟);很自然,用户“等待”ajax 响应告诉他一切都好。

但是,在 130 秒后,此 ajax 请求会返回带有状态代码“500 Internal server error”的响应。 然而,没有。 2;在后端,php 脚本仍在运行(我从它创建的日志记录中知道这一点)。

哪里有问题?

  • max_execution_time 不影响它,因为 php 脚本仍在运行
  • 在本地主机上,一切正常,这只发生在我们的生产服务器上
  • memory_limit 不影响它,(php 脚本仍在运行)
  • jquery ajax timeout 不影响(默认没有超时,我也设置了timeout 300秒,但是没有效果:()

我欢迎任何想法,如何解决这个问题

编辑: 由 fastCGI 空闲超时引起的

【问题讨论】:

  • 如果可能,我会更改您使用的模式。将请求开放这么长时间并不是一个好主意。
  • 感谢查看 fastCGI 超时的提示。奇怪的是,即使 FastCGI 超时(活动和请求)设置为 600 秒,我的服务器也超时了大约 800~900 秒。对我来说,提高请求超时值解决了我的长 PHP 脚本处于循环中等待另一个进程完成的问题。

标签: php jquery ajax timeout


【解决方案1】:

你能在你的 ajax 请求中也添加错误函数吗?

$.ajax({
   type: "POST",
   url: "yourpublicfunction",
   success: function(response){},
   error: function(response){
      console.log(response.responseText);
   }
});

这样您就可以在浏览器控制台日志中看到您的 Web 方法返回的内容,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多