PHP:一次只能执行特定脚本的单个实例吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP:一次只能执行特定脚本的单个实例吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的小脚本打印当前时间,睡眠十秒钟,并再次打印当前时间:

<?PHP
echo "<htML><head><tITle>title</title></head><body>";
echo "<p>PRe-sleep: " . date("H:i:s") . "</p>";
sleep(10);
echo "<p>Post-sleep: " . date("H:i:s") . "</p>";
echo "</body></html>";
?>

我实际上在两个不同的页面中有完全相同的代码(比如说“blah1.PHP”和“blah2.PHP”).如果我使用两个不同的浏览器同时打击这两个不同的页面(本质上),这两个页面似乎同时运行(基本上):

但是,如果我改为使用两种不同的浏览器来打击
同样的脚本副本,就好像第二个实例在第一个完成之前甚至没有开始执行:

因此,似乎PHP或者至少我的特定PHP以其当前配置的方式配置 – 将排队对任何特定脚本的请求,尽管能够同时为单独的脚本提供请求?我误会了吗?

这是预期的吗?这是一般事吗?或者它可能与sleep()函数或实际运行PHP脚本的特定服务器(在我的情况下是apache),操作系统或类似的东西有关?

是否可以依赖此行为(对特定页面的请求排队并且从不同时执行)?另一方面,我可以阻止这种行为吗?

提前致谢.

更新:我现在认为这个问题与PHP,Apache或服务器端的任何事情无关.

我突然意识到当我说“两个不同的浏览器”时,实际上这是不准确的:我实际上已经从两个不同的Firefox窗口(在同一台计算机上)发出了请求.所以,我尝试使用一个Firefox和一个IE,并且两个都在服务器端同时运行.

然后我又尝试了两个不同的Firefox浏览器,并观看一个网络嗅探器.在第一个窗口的响应完成之前,第二个窗口甚至没有发送GET请求.

因此,似乎这种行为是在Firefox上:至少在某些情况下,如果您尝试从Firefox发出两个请求到同一个URL,Firefox会将它们排队,而不是同时处理它们.

解决方法

您可以执行任意数量PHP脚本实例.
当您通过浏览器访问脚本时,您将通过Web服务器访问它.当您通过Web服务器访问脚本时,所发生的一切是服务器执行脚本的1个实例.

从上面看,您似乎已将Web服务器设置为排队具有上述副作用的传入请求.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP:一次只能执行特定脚本的单个实例吗?全部内容,希望文章能够帮你解决PHP:一次只能执行特定脚本的单个实例吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。