【问题标题】:PHP timeout overriden without clear explanationPHP超时被覆盖,没有明确的解释
【发布时间】:2014-04-19 19:36:19
【问题描述】:

我有一个没有定义任何“set_time_limit()”的 PHP 脚本。 PHP.ini max_execution_time = 30 该脚本打开一个 mysql 连接并在同一连接上执行一个可变的查询循环,然后在处理后关闭。 循环是可变的,脚本可以在 1 秒到 1000 秒之间运行。 我希望脚本在默认的 30 秒限制时中止,但这不会发生。

我怀疑 mysql 连接正在取代 PHP 超时默认设置并阻止脚本中止。有人知道这是否可能吗?

脚本非常复杂,放在这里没有意义。但它肯定没有时间限制。

注意:我并不是要强加时间限制,这种行为实际上对我的脚本有好处。我只是想进一步了解这种行为。

【问题讨论】:

  • 你是从命令行运行这个脚本吗?运行 CLI 时最大执行时间为 0。
  • @Devon,不,我在客户端-服务器上运行。
  • @Jono20201,感谢您的提示:这解释了它。我将更新我的问题以表明这一点。

标签: php mysql timeout


【解决方案1】:

感谢 Jono20201。

所以这个问题解释了它:

PHP max_execution_time not timing out

总结:在脚本之外花费的时间没有考虑到(例如 MySQL 运行查询),所以 set_time_limitmax_execution_time 无能为力。

Windows 除外。根据 PHP 文档:

set_time_limit

set_time_limit() 函数和配置指令 max_execution_time 只影响脚本的执行时间 本身。在执行之外发生的活动上花费的任何时间 例如使用 system() 的系统调用、流操作、 确定最大值时不包括数据库查询等 脚本运行的时间。在 Windows 上不是这样 其中测量的时间是真实的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 2016-05-18
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    相关资源
    最近更新 更多