同时打开php脚本

时间:2012-08-03 20:36:31

标签: php internet-explorer firefox google-chrome

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

<?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";
?>

如果我同时在2个标签中的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

1 个答案:

答案 0 :(得分:0)

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

上述情况都不会在不同的浏览器中有不同的反应,这让我相信问题是浏览器特定的。如果您尝试在两个选项卡上加载相同的页面,我最好的猜测是您正在使用的chrome和firefox的版本按顺序发送请求,并在触发第二个之前等待。

最后要想到的是,对于AJAX调用,如果你不是异步执行它们,它们将按顺序触发,但等待第一个完成。一个例子是谷歌分析。他们的跟踪代码现在是异步的,因此页面加载时间不会受到影响。您可以阅读有关异步JavaScript here

的更多信息

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