2010-02-04 103 views
11

是否可以设置最大执行时间exec($command)函数?有时候我$command的执行时间过长,1分钟后停止,并提出此错误:设置exec()的最大执行时间

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\files.php on line 51

我怎样才能提高exec()命令最长执行时间?

if (allow()) { 
    exec($command); 

    if (file_exists($file)) { 
     //exec($makeflv); 
     echo '<script language="javascript" type="text/javascript">window.top.window.aviout(1);</script>'; 

    } else { 
     echo $error; 
     } 

} else { 
    echo $error; 
    } 
+1

顺便说一句,这已经回答了至少三个次:http://stackoverflow.com/questions/1176497/limit-execution-time-of-an-function-or-command-php,http://stackoverflow.com/questions/1928249/php-preventing-max-执行时限制邮件和http://stackoverflow.com/questions/21 47567/avoid-php-execution-time-limit – Gordon 2010-02-04 19:10:19

回答

20

http://php.net/manual/en/function.set-time-limit.php

set_time_limit($seconds) 

如果$second设置为0,没有时间限制的规定。请注意,您应该谨慎取消时间限制。您不希望任何无限循环缓慢吞噬所有服务器资源。一个上限,例如180总比没有限制好。

或者,您可以只调整特定代码块的时间设置,并在时间关键代码运行后重置时间限制,例如,

$default = ini_get('max_execution_time'); 
set_time_limit(1000); 
... some long running code here ... 
set_time_limit($default); 
+0

好吧,我把set_time_limit(180)之前执行($命令); 它似乎工作! 但时间到期后,我想回显一个错误,我怎么做? – robert 2010-02-04 19:25:10

+0

当时间限制到期时它会自行抛出一个错误。这就是让你首先提出你的问题的原因。如果你想要一个自定义错误处理程序,请参阅http://php.net/manual/en/function.set-error-handler.php – Gordon 2010-02-04 19:33:29

+0

是的,但是当我提交表单process.php页面开始与iframe,我只有重复这个:结果是错误或成功! – robert 2010-02-04 21:47:51

3

.htaccess您可以设置这些值:

php_value max_execution_time 1000000 
php_value max_input_time 1000000 

你也可以在你的PHP脚本的顶部试试这个:

set_time_limit(0);