【问题标题】:Can PHP's sleep() function eventually lead to a timeout in the browser?PHP 的 sleep() 函数最终会导致浏览器超时吗?
【发布时间】:2019-06-11 01:17:32
【问题描述】:

我一直在考虑 php 的 sleep() 函数的用途,并且想知道它是如何通过 HTTP 协议工作的。

从用户的角度来看(以及我观察到的),当sleep() 执行时,浏览器会挂起,直到延迟结束。

我的问题:如果您调用 sleep 的时间足够长,以至于浏览器没有得到响应并认为服务器已关闭,该怎么办?这是可能发生的事情吗?

我对这个功能及其工作原理知之甚少,所以如果有人能指出我正确的方向,那就太棒了。

(通过超时这个词,我不是在谈论 PHP 的 max_execution_time。我是在谈论浏览器超时。)

【问题讨论】:

  • 你可以很容易地测试这个
  • @tim 似乎很明显我可以做到这一点,但我在 SO 上问这个问题是因为我还想解释为什么答案就是为什么会这样。
  • 只是出于好奇,还是有您想要解决的问题?
  • @DaveS 主要是出于好奇。我想进一步了解该功能的工作原理,看看我是否可以很好地利用它。
  • 换句话说,浏览器不知道为什么脚本需要很长时间才能完成。 sleep() 没有什么特别之处。

标签: php networking


【解决方案1】:

是的,每个浏览器都有自己的默认超时限制。对于 chrome,它是 300 秒。 Check this out for more details.

对于 chrome,它是不可更改的。不过,在 Firefox 中,您可以更改它。

因此,最终,如果您 sleep() 脚本的秒数超过浏览器的开箱即用默认超时限制,它就会超时。

原因?简单的浏览器不太喜欢保持活动连接,并且希望在合理的时间范围内听到服务器的回答。

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 2021-12-12
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2019-03-11
    • 2011-01-02
    相关资源
    最近更新 更多