我遇到一种情况,我对服务器的Ajax调用可能需要很长时间(30-40秒)。我正在使用jQuery。并将超时时间设置为60秒。因此,如果我在60秒内没有得到任何响应,调用将被中止并报告错误。
现在的问题是,在此之后对服务器的任何连续调用都将继续等待,而不仅仅是AJAX调用,甚至在新窗口中从同一服务器打开新页面也将继续等待。让它再次工作的唯一方法是完全重新启动浏览器。是什么原因造成的呢?这和服务器有关吗?
当终止ajax请求时,PHP脚本实际上继续运行。
如果你使用会话,用户的会话被正在运行的脚本锁定,你必须等待脚本终止才能执行其他请求。
这与php image resize
期间服务器工作负载增加的问题完全相同解决方案是在做很长时间的事情之前解锁会话:
session_write_close();
do_something_long();
session_start();