我对php.ini中设置的最长执行时间几乎没有疑问。
假设max_execution_time为3分钟,请考虑以下情况:
我的流程将在2分钟后结束。
但是它处于循环中并且它应该工作5次。所以它变成了10分钟。
脚本是否正常运行而不显示超时错误?为什么呢?
PHP函数只打印数据,只需2分钟。
但查询执行需要5分钟。
脚本会运行没有错误吗?为什么呢?
我的单个php进程本身需要5分钟。
但是我从命令行调用脚本。
它能正常工作吗?为什么呢?
如何允许内存和执行时间相关?
如果脚本的执行时间非常长
但它会返回少量数据
是否会影响记忆?为什么呢?
我想了解内部发生的事情,这就是为什么要问这些。 我不想只是增加时间限制和内存限制。
答案 0 :(得分:35)
max_execution_time
上的规则相对简单。
解释文件时,执行时间开始计时。准备请求,准备上传文件,Web服务器等事务所需的时间不计入执行时间。
执行时间是脚本运行的总时间,包括数据库查询,无论它是否在循环中运行。因此,在第一种和第二种情况下,脚本将以超时错误终止,因为这是max_execution_time
的已定义行为。
使用exec()
进行外部系统调用,并且 计算执行时间除外,在Windows上除外。 (Source)这意味着您可以运行时间超过max_execution_time
的外部程序。
从命令行调用时,max_execution_time
默认为0
。 (Source)所以在第三种情况下,你的脚本应该没有错误地运行。
执行时间和内存使用量彼此无关。脚本可以运行数小时而不会达到内存限制。如果是这样,那么通常是由于一个循环没有取消变量,以及之前保留的内存没有正确释放。