2010-02-04 3 views
11

Est-il possible de définir la durée d'exécution maximale de la fonction exec($command)? Parfois, l'exécution de mon $command dure trop longtemps l'arrêt après 1 minute et présentant cette erreur:Définir la durée d'exécution maximale pour exec() spécifiquement

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

Comment puis-je augmenter le temps d'exécution maximum de commande 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

BTW, cela a été répondu au moins trois times: http://stackoverflow.com/questions/1176497/limit-execution-time-of-an-function-or-command-php, http://stackoverflow.com/questions/1928249/php-preventing-max- execution-time-limit-for-mail et http://stackoverflow.com/questions/21 47567/avoid-php-execution-time-limit – Gordon

Répondre

20

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

set_time_limit($seconds) 

Si $second est réglé sur 0, aucune limite de temps est imposée. Notez que vous devriez être prudent avec la suppression de la limite de temps tout à fait. Vous ne voulez pas que les boucles infinies mangent lentement toutes les ressources du serveur. Une limite haute, par ex. 180 est mieux que pas de limite.

Vous pouvez également ajuster le réglage de l'heure uniquement pour certains blocs de code et réinitialiser la limite de temps après l'exécution du code de temps critique, par ex.

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

ok je mets set_time_limit (180) avant exec ($ commande); Cela semble fonctionner! mais après le temps expire je veux faire l'écho d'une erreur comment je fais cela ?? – robert

+0

Il va lancer une erreur par lui-même lorsque le délai expire. C'est ce qui vous a poussé à poser votre question en premier lieu. Si vous voulez un gestionnaire d'erreur personnalisé, voir http://php.net/manual/en/function.set-error-handler.php – Gordon

+0

oui, mais quand je soumets un formulaire une page process.php commence par un iframe, je seulement whant pour faire écho ceci: