【发布时间】:2016-03-03 16:01:39
【问题描述】:
我正在编写一段 PHP 代码,它在某个时刻运行了一个 foreach 循环,因为我担心它需要太长时间,所以我添加了语句 set_time_limit(20); 作为循环的第一行. (我假设 safe_mode 和 Suhosin 补丁未启用。)
现在,我一直在 http://php.net/manual/en/function.set-time-limit.php 阅读该内容
调用时,set_time_limit() 会从零重新启动超时计数器。换句话说,如果超时是默认的 30 秒,并且在脚本执行后 25 秒调用了 set_time_limit(20) 等调用,则脚本将在超时之前总共运行 45 秒。
但我有点困惑。换句话说,如果循环运行 10 次,并且每个循环将花费 1 秒的时间运行,那么在第 10 个循环结束时,max_execution_time 的值将增加到 20 * (10 - 1) = 180秒加上初始的max_execution_time 值?
【问题讨论】:
-
否,如果它在循环中,则每次它的值都重写为 20。如果它在循环之外,那么如果你没有应用任何代码来修改它,值也不会改变
-
set_time_limit(X) 基本上是你在说“我愿意再等 X 秒”,当这些 X 秒结束时,就是这样。不管之前的限制是多少。
标签: php execution-time