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服务器设置为排队具有上述副作用的传入请求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |