Page 1 sur 1

stop une fonction après x msec

Posté : 04 mai 2012, 10:21
par telnes
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

Re: stop une fonction après x msec

Posté : 04 mai 2012, 17:05
par popy
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.

Re: stop une fonction après x msec

Posté : 05 mai 2012, 00:07
par dix2
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

Re: stop une fonction après x msec

Posté : 05 mai 2012, 00:23
par nhachet
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

Re: stop une fonction après x msec

Posté : 07 mai 2012, 10:20
par telnes
hello

ok je vais regarder de ce coté la

merci