【问题标题】:How does PHP max_execution_time work?PHP max_execution_time 是如何工作的?
【发布时间】:2011-05-12 08:21:54
【问题描述】:

我对 php.ini 中设置的最大执行时间没有什么疑问。

假设 max_execution_time 为 3 分钟,请考虑以下情况:

  1. 我有一个进程将在 2 分钟后结束。

    但它处于一个循环中,它应该工作 5 次。所以它变成了10分钟。

    脚本会正常运行而不会显示超时错误吗?为什么?

  2. PHP 函数只是打印数据,只需要 2 分钟。

    但查询执行需要 5 分钟。

    脚本运行时不会出错吗?为什么?

  3. 我的单个 php 进程本身需要 5 分钟。

    但是我从命令行调用脚本。

    它会正常工作吗?为什么?

  4. 内存允许和执行时间有什么关系?

    如果脚本的执行时间非常长

    但它返回的数据量很小

    它会影响记忆吗?为什么?

我想了解内部发生的事情,这就是为什么要问这些。 我不想只是增加时间限制和内存限制。

【问题讨论】:

    标签: php


    【解决方案1】:

    max_execution_time上的规则比较简单。

    • 在解释文件时开始计算执行时间。准备请求、准备上传文件、Web 服务器执行其操作等所需的时间不计入执行时间。

    • 执行时间是脚本运行的总时间,包括数据库查询,无论它是否在循环中运行。所以在第一种和第二种情况下,脚本将因超时错误而终止,因为这是max_execution_time 的定义行为。

    • 使用exec() 的外部系统调用等计入执行时间,Windows 除外。 (Source) 这意味着您可以运行比max_execution_time 更长的外部程序。

    • 从命令行调用时,max_execution_time 默认为 0。 (Source) 所以在第三种情况下,您的脚本应该可以正常运行。

    • 执行时间和内存使用无关。脚本可以运行数小时而不会达到内存限制。如果是这样,那么通常是由于没有取消设置变量的循环,并且之前保留的内存没有正确释放。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2014-10-11
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多