我仍然不完全理解set_time_limit()是如何工作的,文档中也没有提到任何关于作用域的内容。假设我有以下代码:
public function fetchSomething()
{
//this runs for 10 seconds
return $fetchedData;
}
public function doSomething()
{
set_time_limit(101);
//do stuff for 50 seconds
$this->fetchSomething();
//do stuff for another 50 seconds
}这是否会因为doSomething()运行50+10+50秒而超出时间限制并抛出异常,或者doSomething()会为50+50运行(而fetchSomething()是单独计时的)?
发布于 2019-02-01 14:41:12
根据the documentation的说法
也就是说,大多数web服务器都有超过PHP的时间限制,在Apache中,这是在httpd.conf中的Timeout下设置的,默认是300秒。如果使用set_time_limit()的值大于Apache的超时值,Apache将在PHP停止之前停止PHP。如果控制在脚本之外,PHP可能会让某些脚本超过时间限制。如果您使用sleep()函数的值大于脚本剩余的执行时间,也会发生这种情况。
发布于 2019-02-01 14:55:22
它持续脚本的生命周期-在脚本内部,它将从调用时起产生101秒的影响
发布于 2019-02-01 14:59:21
它设置允许脚本运行的秒数。如果达到该值,脚本将返回致命错误。默认限制为30秒,如果存在,则为php.ini中定义的max_execution_time值。
调用时,set_time_limit()从零重新启动超时计数器。换句话说,如果超时是默认的30秒,并且在脚本执行25秒时调用了set_time_limit(20),那么在超时之前,脚本将总共运行45秒。
阅读官方文档:Here
https://stackoverflow.com/questions/54473788
复制相似问题