2015-11-07 113 views
1

我试图让两个php脚本实例同时运行。我有一个剧本,“test.php的”:PHP脚本的多个实例不会在同一个URL中的同一浏览器中同时加载

<p><?php echo time(); ?> Sleeping...</p> 
<?php sleep(5); ?> 
<p><?php echo time(); ?> done</p> 

如果我打开两个浏览器标签页在同一时间,我得到这个:

1446855680睡觉......

1446855685做

这:

1446855686睡觉......

1446855691做

一个实例块,直到其他负载。这发生在Firefox和Chromium上。

如果我做第二个相同的剧本,“test2.php”,或重写两个url以相同的脚本,并加载在不同标签的两页,我得到这个:

1446855862睡觉.. 。

1446855867做

这:

1446855863睡觉...

1446855868个做

两个实例都加载在同一时间。所以这是相同的URL被阻止。

如何获得具有相同URL的脚本的两个实例同时加载/运行?

+0

由于我没有在您的skript中看到任何实际的同步,您是否检查过它不是浏览器优化(您是否尝试过在firefox中加载一个实例而在Chrome中加载其他实例?)。如果是浏览器优化,请尝试向页面加载添加一个随机参数('?random = 123')(带有*不同的*值)并查看会发生什么。 – ted

+2

这不是关于PHP的行为,而是浏览器的行为。 firefox和Chrome/-ium都会按顺序执行(可高速缓存)完全相同网址的请求。 – VolkerK

+0

@ted页面将在Firefox和Chromium中同时加载。随机参数也允许它同时加载。 –

回答

0

正如VolkerK指出的那样,您的测试证实Firefox/Chrome按顺序执行完全相同的 URL的请求。但是实际上这不是问题,因为用户通常不会加载同一页面两次,而对于向Ajax请求提供数据的脚本,由于附加了不同的参数,因此URL会有所不同。

如果你想绕过这个机制,你可以在url上附加一个随机参数(必须在不同的浏览器标签中有所不同),即url.to/your/script?urlID=4821de7e524cf762deab6ed731343466。随机参数使浏览器看到两个不同的URL,从而并行执行加载。