stop une fonction après x msec

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : stop une fonction après x msec

Re: stop une fonction après x msec

par telnes » 07 mai 2012, 10:20

hello

ok je vais regarder de ce coté la

merci

Re: stop une fonction après x msec

par nhachet » 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

Re: stop une fonction après x msec

par dix2 » 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

Re: stop une fonction après x msec

par popy » 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.

stop une fonction après x msec

par telnes » 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