我在对HTTP请求进行编码时遇到了这个问题:对http://142.93.47.235主机(LAMP)的同一页面的请求不是异步的。
这是我的意思:
服务器端具有3个文件:index.php,pindex.php和hindex.php。他们所有人的内容完全相同:
<?php
$a = Date('H:i:s d, m, Y');
set_time_limit(0);
sleep(rand(1,10));
$b = Date('H:i:s d, m, Y');
exit($a." ".$b);
因此,我尝试使xhr循环访问此页面(或其中只有3次-运作方式相同)。
var index = ["/","/pindex.php","hindex.php"];
for (var i = 0; i < index.length; i++) {
var url = "http://142.93.47.235";
let request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if(request.readyState === XMLHttpRequest.DONE && request.status === 200) {
console.log(this.responseText);
}
};
request.send();
}
我希望这些请求能够异步响应,这就是为什么我说php随机休眠,并回显请求的开始时间和结束时间,所以我可以得到首先返回的确切信息。
例如,如果hindex.php文件生成3秒钟的睡眠,而index.php生成10秒,则hindex将首先应答。但是,无论什么时候睡眠时间长短不一,每次这三个请求都被一个接一个地发送。