2010-02-04 7 views
11

exec($command) işlevinin maksimum yürütme süresini ayarlamak mümkün mü?exec() için maksimum yürütme süresinin ayarlanması özellikle

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

nasıl exec() komut maksimum yürütme zamanı artırabilir: Bazen $command yürütülmesi 1 dakika sonra durdurma ve bu hatayı sunulması çok uzun sürer?

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

, bu en az üç yanıtlandı kez: http://stackoverflow.com/questions/1176497/limit-execution-time-of-an-function-or-command-php, http://stackoverflow.com/questions/1928249/php-preventing-max- posta için yürütme-zaman sınırı ve http://stackoverflow.com/questions/21 47567/önlemek-php-yürütme-zaman sınırı – Gordon

cevap

20

$second0 olarak ayarlanırsa, zaman sınırı http://php.net/manual/en/function.set-time-limit.php

set_time_limit($seconds) 

dayatılan bakın. Zaman sınırını tamamen kaldırmaya dikkat etmelisiniz. Tüm sunucu kaynaklarını yavaşça yiyerek sonsuz döngü istemezsiniz. Yüksek bir limit, ör. 180, sınırdan daha iyidir. Alternatif olarak, yalnızca belirli kod blokları için zaman ayarını ve kritik kodun çalıştırılmasından sonra zaman sınırının sıfırlanmasını ayarlayabilirsiniz.

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

tamam, exec ($ buy) önce set_time_limit (180) koydu; Çalışıyor görünüyor! ama zaman geçtikten sonra bunu nasıl yanıltmak istiyorum? – robert

+0

Zaman sınırı dolduğunda kendi kendine bir hata atacaktır. İlk etapta sorunuzu sormanızı sağlayan şey buydu. Özel bir hata işleyicisi istiyorsanız, bkz. Http://php.net/manual/en/function.set-error-handler.php – Gordon

+0

evet, ancak bir form gönderdiğimde, iframe ile bir process.php sayfası başlatın. sadece bunu yankılamak için whant: , sonuç bir hata ya da başarı! – robert

3

.htaccess yılında bu değerleri ayarlayabilirsiniz:

php_value max_execution_time 1000000 
php_value max_input_time 1000000 

Ayrıca PHP script üstündeki bu deneyebilirsiniz: Btw

set_time_limit(0);