stop une fonction après x msec

Eléphant du PHP | 422 Messages

04 mai 2012, 10:21

bonjour

y a t il une possibilité de sortir d'une fonction si elle prend trop de temps ?

res = false;
$start = microtim(true);
while($res!==false or $mktime > 1){

$res = mafonction(); // pas bon car le while va être bloqué par l'attente de la réponse de la fonction :/
$mktime = microtime(true) - $start;
}

ou il faut gérer ca dans la fonction
ou faut pas partir dans cette direction :)


merki
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 275 Messages

04 mai 2012, 17:05

Ben, c'est un peu l'idée, pour peu qte "mafonction" ne fasse qu'une petite partie du travail a effectuer. Sinon, il n'y a pas de solution pour ce genre de problème.

Eléphant du PHP | 267 Messages

05 mai 2012, 00:07

tu peux lancer un processus en parallele avec proc_open() qui va executer la fonction en question
dans le programme principal, tu fais un sleep() et ensuite avec les fonctions proc_get_status() et proc_terminate(), tu gères le processus secondaire

@+
dix2

Eléphant du PHP | 127 Messages

05 mai 2012, 00:23

y a t il une possibilité de sortir d'une fonction si elle prend trop de temps ?
Bonsoir,

l'option de configuration max_execution_time est là pour ça. Elle est paramètrable dans le PHP.ini (commun à tous les scripts) ou via la directive set_time_limit(); (script en cours uniquement). Lorsque que la durée d’exécution atteint la durée spécifiée, le script sort en fatal error.

Bémol : il n'est à priori pas possible d’intercepter les erreurs fatales en redéfinissant les errors handlers pour proposer un traitement alternatif...

Plus d'infos : http://www.php.net/manual/fr/info.confi ... ution-time

Eléphant du PHP | 422 Messages

07 mai 2012, 10:20

hello

ok je vais regarder de ce coté la

merci
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)