JavaScript显然在循环中发送另一个之前等待每个AJAX调用

时间:2010-06-16 10:36:06

标签: php ajax loops javascript intervals

直截了当: 我有这个javascript:

for(item=1;item<5;item++)
{
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET",'zzz.php', true);
    xmlhttp.send();
}

在PHP文件中有这样的东西:

usleep(5);die('ok');

现在问题是javascript似乎在等待每个ajax调用在发送另一个之前完成。 所以第一个响应在大约后回复。 5秒,10秒后接下来,依此类推。

这是我所做的非常简化的版本,因为真正的脚本涉及在PHP中使用cURL而在JS lib中使用jQuery。但问题仍然存在。

为什么回复会以5秒的间隔回复?

2 个答案:

答案 0 :(得分:2)

如果你在PHP中使用会话,那么连续的请求将被“保持”直到会话文件的锁定被释放,通过终止前一个持有锁的脚本,或者通过显式的session_write_close()调用那个剧本。这使得服务器的外观一次只能运行一个请求,这可能是您的问题。

答案 1 :(得分:1)

所有五个请求可能不会同时处理,因为HTTP标准明确规定您只能保证在任何时候都有两个同时连接到服务器(大多数浏览器都有更高的限制,所以他们可能会尝试有大约4-8个连接)。如果你达到一个高于一的限制,那么这可能是一个瓶颈。