AJAX调用中止后服务器无响应

ami*_*chd 2 php apache ajax jquery timeout

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

现在的问题是在这一点之后对服务器的任何连续调用只是等待,而不仅仅是AJAX调用,甚至在新窗口中从同一服务器打开一个新页面,只是一直等待.让它再次运行的唯一方法是完全重启浏览器.可能是什么导致了这个?这与服务器有关吗?

Arn*_*anc 5

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

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

这与在php映像大小调整期间服务器工作负载增加完全相同的问题

解决方案是在做很长时间之前解锁会话:

session_write_close();
do_something_long();
session_start();
Run Code Online (Sandbox Code Playgroud)