Attendre la fin d'une fonction

Eléphant du PHP | 119 Messages

01 mars 2009, 16:08

Bonjour,

j'ai fait un boucle pour mettre à jours des données de ce type:

Code : Tout sélectionner

$sql=sql('select id_travaux from travaux where en_cours=1'); for($i=0; $i<count($sql); $i++){ $id=$sql[$i]['id_travaux']; traite_travaux($id); } function traite_travaux(){ .... }

Mais le problème c'est que ma boucle lance tout les traite_travaux($id) d'à filé.

Mais je voudrais qu'il continue la boucle qu'une fois que la fonction traite_travaux ait traité le $id précèdent.

Voilà est-ce possible?

Merci :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 mars 2009, 16:14

PHP ne lance pas de processus en parallèle... ton problème doit venir d'ailleurs, car php ne passera pas à l'itération suivante tant que le traitement de ta fonction n'est pas terminé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 119 Messages

01 mars 2009, 16:16

ok je crois que je viens de comprendre.

En fait voilà:

Code : Tout sélectionner

$sql=sql('select id_travaux from travaux where en_cours=1'); for($i=0; $i<count($sql); $i++){ $id=$sql[$i]['id_travaux']; traite_travaux($id); } function traite_travaux($id){ execute_definitif($id); } function execute_definitif($id){ ...... }
Du coup il lance plein de fois traite_travaux alors que execute_definitif du précèdent n'est pas encore fini...

Y'a moyen de contourner ce problème ou pas?


J'ai contourné le problème en mettant le code de la deuxième fonction appelée dans la première

merci