gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:38:12 24 4
gpt4 key购买 nike

我有一个简单的小脚本,它打印当前时间,休眠十秒钟,然后再次打印当前时间:

<?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 个实例。

从上面看来,您似乎已将网络服务器设置为对具有上述副作用的传入请求进行排队。

关于PHP:一次只能执行特定脚本的单个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35183816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com