PHP max_execution_time如何工作?

zod*_*zod 15 php

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

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

  1. 我有一个过程,将在2分钟后结束.

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

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

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

    但查询执行需要5分钟.

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

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

    但我从命令行调用脚本.

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

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

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

    但它返回少量数据

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

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

Pek*_*ica 35

规则max_execution_time相对简单.

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

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

  • 除了Windows之外,使用exec()等外部系统调用计入执行时间.(来源)这意味着你可以运行一个花费更长时间的外部程序max_execution_time.

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

  • 执行时间和内存使用量彼此无关.脚本可以运行数小时而不会达到内存限制.如果是这样,那么通常是由于一个循环,其中变量未被设置,并且先前保留的内存未被正确释放.

  • 从我的个人测试和[这个答案](http://stackoverflow.com/a/10027320/1408100)和[这个评论](http://php.net/manual/fr/ function.set-time-limit.php#115057) (2认同)