我有一个我知道需要很长时间才能执行的功能。因此,我想在函数的开头做这个:
set_time_limit(0);
当我完成该功能时,是否会将时间限制恢复到原来的状态?或者我应该将它恢复到原来的状态?如果是这样,我如何获得原始的最大执行时间?
答案 0 :(得分:0)
离开功能时,该值不会重置。您可以使用ini_get阅读原文,但要获得正确的行为并非易事,请注意http://php.net/set_time_limit中的以下内容:
调用时,set_time_limit()从零重新启动超时计数器。换句话说,如果超时是默认的30秒,并且脚本执行了25秒,则会调用set_time_limit(20),脚本将在超时之前运行总共45秒。
答案 1 :(得分:0)
您可以使用http://www.php.net/manual/en/function.get-cfg-var.php或类似这样的课程:
class TempIniValues {
private $original_settings = array();
public function __construct($var_name, $value) {
$this->set($var_name, $value);
}
public function set($var_name, $value) {
$this->original_settings[$var_name] = ini_get($var_name);
ini_set($var_name, $value);
}
public function get($var_name, $if_orig=false) {
return $if_orig?$this->get_orig($var_name):ini_get($var_name);
}
public function get_orig($var_name) {
return isset($this->original_settings[$var_name])?$this->original_settings[$var_name]:NULL;
}
public function __destruct() {
foreach($this->original_settings AS $setting_name => $setting_value) {
ini_set($setting_name,$setting_value);
}
}
}
function test() {
var_dump(ini_get('max_execution_time'));
$temp_ini=new TempIniValues('max_execution_time',42);
var_dump(ini_get('max_execution_time'));
}
var_dump(ini_get('max_execution_time'));
test();
var_dump(ini_get('max_execution_time'));