加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:03:40 所属栏目:PHP教程 来源:网络整理
导读:我有一个简单的小脚本打印当前时间,睡眠十秒钟,并再次打印当前时间: ?phpecho "htmlheadtitletitle/title/headbody";echo "pPre-sleep: " . date("H:i:s") . "/p";sleep(10);echo "pPost-sleep: " . date("H:i:s") . "/p";echo "/body/html";? 我实际上在两
我有一个简单的小脚本打印当前时间,睡眠十秒钟,并再次打印当前时间:

<?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”).如果我使用两个不同的浏览器同时打击这两个不同的页面(本质上),这两个页面似乎同时运行(基本上):

blah1.php output:

Pre-sleep: 11:15:26

Post-sleep: 11:15:36

blah2.php output:

Pre-sleep: 11:15:27

Post-sleep: 11:15:37

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

blah1.php instance 1 output

Pre-sleep: 11:09:07

Post-sleep: 11:09:17

blah1.php instance 2 output

Pre-sleep: 11:09:17

Post-sleep: 11:09:27

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

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

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

提前致谢.

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

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

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读