2010-06-16 45 views
0

单刀直入前: 我有这个JavaScript:的JavaScript显然等待每一个AJAX调用在一个循环发送另一个

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库中的jQuery。但问题依然如故。

为什么响应以5秒为间隔回来?

回答

2

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

+0

谢谢! 这是问题所在 – itako 2010-06-16 10:51:47

1

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