【发布时间】:2011-11-26 01:00:30
【问题描述】:
使用set_time_limit() 或max_execution_time,不会“真正”限制(Windows 除外)执行时间,因为如 PHP 手册所述:
注意:
set_time_limit() 函数和配置指令 max_execution_time 只影响脚本的执行时间 本身。在执行之外发生的活动上花费的任何时间 诸如使用 system() 的系统调用、流操作、 确定最大值时不包括数据库查询等 脚本运行的时间。在 Windows 上不是这样 其中测量的时间是真实的。
一个解决方案是proposed in PHP comments 有一个“真正的”执行时间限制,就像我正在寻找的那样,但我发现它不清楚/令人困惑。
【问题讨论】:
-
真正的执行时间限制由执行进程的系统设置。如果达到限制(也称为硬限制),它可以终止进程。这是一个真正的限制,通常基于 CPU 时间,即进程实际消耗的时间(不完全是进程已经运行了多长时间)。
-
the comment you are talking about 中建议的解决方案对我来说看起来不错 - 只要您有可用的 POSIX 和 pcntl 函数。你到底有什么不明白的?
-
更彻底地查看 PHP 手册 cmets 中的建议很有帮助 :) 起初我不明白它是如何工作的(我不习惯线程处理)。
-
如果您需要控制一些基于循环的过程,您可以使用简单的计时器。
-
你可以非常接近使用tick函数来实现它,但它会是一个hack。 php.net/manual/en/function.register-tick-function.php
标签: php execution-time