2010-02-04 227 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);