【问题标题】:Server unresponsive after AJAX call is abortedAJAX 调用中止后服务器无响应
【发布时间】:2011-11-16 02:56:25
【问题描述】:

我有一种情况,我对服务器的 Ajax 调用可能需要很长时间(30-40 秒)。我正在使用 jQuery.ajax 并将超时设置为 60 秒。因此,如果我在 60 秒内没有收到任何响应,则调用将中止并报告错误。

现在的问题是,在此之后对服务器的任何连续调用都在等待,而不仅仅是 AJAX 调用,甚至在新窗口中从同一服务器打开新页面,也只是一直等待。让它再次工作的唯一方法是完全重新启动浏览器。这可能是什么原因造成的?这和服务器有关吗?

【问题讨论】:

标签: php jquery ajax apache timeout


【解决方案1】:

当您中止 ajax 请求时,PHP 脚本实际上会继续运行。

如果您使用会话,则用户的会话会被正在运行的脚本锁定,您必须等待脚本终止才能执行其他请求。

这与Server workload increase during php image resize中的问题完全相同

解决方案是在做很长的事情之前解锁会话:

session_write_close();
do_something_long();
session_start();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2016-01-18
    • 2023-03-08
    • 2015-05-01
    相关资源
    最近更新 更多