PHP max_execution_time如何工作?

时间:2010-11-18 22:45:21

标签: php

我对php.ini中设置的最长执行时间几乎没有疑问。

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

  1. 我的流程将在2分钟后结束。

    但是它处于循环中并且它应该工作5次。所以它变成了10分钟。

    脚本是否正常运行而不显示超时错误?为什么呢?

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

    但查询执行需要5分钟。

    脚本会运行没有错误吗?为什么呢?

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

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

    它能正常工作吗?为什么呢?

  4. 如何允许内存和执行时间相关?

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

    但它会返回少量数据

    是否会影响记忆?为什么呢?

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

1 个答案:

答案 0 :(得分:35)

max_execution_time上的规则相对简单。

  • 解释文件时,执行时间开始计时。准备请求,准备上传文件,Web服务器等事务所需的时间不计入执行时间。

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

  • 使用exec()进行外部系统调用,并且 计算执行时间除外,在Windows上除外。 (Source)这意味着您可以运行时间超过max_execution_time的外部程序。

  • 从命令行调用时,max_execution_time默认为0。 (Source)所以在第三种情况下,你的脚本应该没有错误地运行。

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