我仍然不完全了解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()单独计时),会不会超出时间限制并引发异常? >
答案 0 :(得分:0)
它可以延长脚本的寿命-在脚本内部,从调用之时起,将有101秒的影响
答案 1 :(得分:0)
它设置允许脚本运行的秒数。如果达到此目的,脚本将返回致命错误。默认限制为30秒,如果存在,则为max_execution_time
中定义的php.ini
值。
被调用时,set_time_limit()
从零重新启动超时计数器。换句话说,如果超时是默认的30秒,并且在脚本执行的25秒后进行了诸如set_time_limit(20)
之类的调用,则该脚本将在超时之前总共运行45秒。
阅读正式文档:Here
答案 2 :(得分:-1)
使用此功能时,脚本计时器将重置为0;否则,脚本计时器将重置为0。如果将时间限制设置为50,则在40秒后将时间限制设置为30,该脚本将总共运行70秒。也就是说,大多数网络服务器都有自己的时间限制,超过了PHP。在Apache中,这是在httpd.conf中的“超时”下设置的,默认值为300秒。如果您将set_time_limit()的值设置为大于Apache的超时值,则Apache将在PHP自身停止之前停止PHP。如果控制超出脚本范围,PHP可能会允许某些脚本超过时间限制。例如,如果您运行一个耗时100秒的外部程序,并且将时间限制设置为30秒,PHP将让脚本继续运行100秒,然后立即终止。如果使用的sleep()函数的值大于脚本执行的时间,也会发生这种情况。