同时打开php脚本


simultaneous opening of php script

我刚刚遇到了一些问题,需要指导来解决。我有这个测试脚本:

<?php
header('Content-type: text/plain');
$start = microtime(true);
echo 'Start time: '.date('H:i:s')."'n";
sleep(5);
echo 'End time: '.date('H:i:s')."'n";
echo 'Ellapsed time: '.(microtime(true)-$start)."'n";
?>

如果我在Firefox或Chrome中同时在两个选项卡中运行这个脚本,我会看到第二个选项卡中的脚本只有在第一个脚本完成工作后才能工作。在IE9中,它实际上是同时工作的,而不是一个接一个。问题出在哪里?为什么脚本不能在FF和Chrome中同时工作?

Chrome 结果

1选项卡:

Start time: 22:34:03
End time: 22:34:08
Ellapsed time: 4.9997730255127

2选项卡:

Start time: 22:34:08
End time: 22:34:13
Ellapsed time: 5.0004279613495

对于单个用户可以拥有的连接数量,大多数服务器都有限制。页面可能一个接一个加载的另一个原因可能是会话变量。如果使用的文件打开了会话,则必须完全加载第一个页面,并且必须关闭会话才能开始加载第二个页面。

以上两种情况在不同的浏览器中都不会有不同的响应,这让我相信问题是特定于浏览器的。如果你试图在两个选项卡上加载同一个页面,我的最佳猜测是,你使用的chrome和firefox版本会按顺序发送请求,并在启动第二个之前等待。

最后想到的一件事是,对于AJAX调用,如果您不是异步执行它们,它们将按顺序启动,但等待第一个调用完成。谷歌分析就是一个例子。他们的跟踪代码现在是异步的,这样页面加载时间就不会受到影响。你可以在这里阅读更多关于异步JavaScript的信息

通常最好组合AJAX请求来减少网络拥塞和服务器负载。如果可能的话,我建议你考虑将它们结合起来,因为一旦你的应用程序或网站变得更受欢迎,10000个请求总是比20000个好…