我在Google-Chrome中遇到了一个奇怪的问题,当一个长时间运行的脚本打开一个标签时,另一个标签会处于“挂起”状态,直到第一个标签结束。我已经创建了一个小提琴来重现这个问题,并在这里包含了在Safari上运行的结果。当这个提琴添加?q=a和?q=b时,它就解决了这个问题。然而,当我调用两个不同的智能urls ( http://domain.com/a/v1 http://domain.com/a/v2,甚至http://dev.domain.com/a/v6或http://dev.domain.com/b/v8)时,它们也会导致这种“挂起”的行为。
小提琴:
<?php
echo time();
echo '<br>Now: '. date('h:m:s');
sleep(10);
echo time();
echo '<br>Now: '. date('h:m:s');
?>在Google Chrome中使用它打开两个并发选项卡时,输出: 1:
Now: 11:01:12
1357117332
Now: 11:01:22
13571173422:
Now: 11:01:22
1357117342
Now: 11:01:32
1357117352正如您所看到的,虽然我几乎同时启动了这两个程序,但第二个程序等待第一个程序完成后才开始。
在Safari上运行时也是如此: 1:
Now: 10:01:36
1357116336
Now: 10:01:46
13571163462:
Now: 10:01:37
1357116337
Now: 10:01:47
1357116347正如你所注意到的,在Chrome中,第二个脚本只有在第一个脚本完成后才会启动,而在Safari中,它们是协同工作的。是什么导致了这种奇怪的行为?我应该寻找哪些信息来帮助调试原因?
更新:添加?q=a和?q=b可以解决这个问题的答案是正确的。现在我试图弄清楚为什么我会在这个问题中运行,尽管我调用了两个不同的urls。我使用的是智能url,url看起来像domain.com/dir/var1和domain.com/dir/var2,甚至dev.domain.com/var6都有同样的效果。是什么导致了这种情况?
发布于 2013-01-02 17:14:28
这是Chrome的行为。
如果您对完全相同的url执行GET请求-它将一直等到第一个请求结束。只需通过添加一些不同的参数(如?q=a )来更改urls,就可以看到它们将同时执行。
https://stackoverflow.com/questions/14119367
复制相似问题