直截了当: 我有这个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秒的间隔回复?
答案 0 :(得分:2)
如果你在PHP中使用会话,那么连续的请求将被“保持”直到会话文件的锁定被释放,通过终止前一个持有锁的脚本,或者通过显式的session_write_close()调用那个剧本。这使得服务器的外观一次只能运行一个请求,这可能是您的问题。
答案 1 :(得分:1)
所有五个请求可能不会同时处理,因为HTTP标准明确规定您只能保证在任何时候都有两个同时连接到服务器(大多数浏览器都有更高的限制,所以他们可能会尝试有大约4-8个连接)。如果你达到一个高于一的限制,那么这可能是一个瓶颈。