Poppy Posté 3 Juillet 2005 Posté 3 Juillet 2005 Yep Je voulais effectuer plusieurs requêtes simultannément stream_select() : j'ai pas bien compris comment on s'en servait, quelqu'un pourrait m'éclairer ? Merci d'avance
Dnegel666 Posté 3 Juillet 2005 Posté 3 Juillet 2005 Essai http://php.mirrors.ilisys.com.au/manual/fr...ream-select.php
Poppy Posté 4 Juillet 2005 Auteur Posté 4 Juillet 2005 J'avais déjà vu ça, mais j'aimerai un exemple concret
loufoque Posté 6 Juillet 2005 Posté 6 Juillet 2005 (modifié) par exemple, pour récupérer dans un tableau de chaînes les données lisibles sur plusieurs flux : $buffer = array();$remove = array();$streams = array($sd1, $sd2, $sd3);$timeout = NULL; // on peut mettre un timeout en secondeswhile(true){ $r = array_diff($streams, $remove); if(!$r) break; $chg = stream_select($r, $w = NULL, $e = NULL, $timeout); if($chg === false) { // erreur, throw new Exception par exemple } if($chg > 0) { foreach($r as $sd) { $data = fread($sd, 4096); if($data === false) { // erreur } if($data == '') { $remove[] = $sd; } if(!isset($buffer[intval($sd)])) { $buffer[intval($sd)] = $data; } else { $buffer[intval($sd)] .= $data; } } } else { // time out (si fourni) }} Modifié 6 Juillet 2005 par loufoque
Poppy Posté 7 Juillet 2005 Auteur Posté 7 Juillet 2005 Oulala, difficile à utiliser dis moi Merci tout de même
loufoque Posté 7 Juillet 2005 Posté 7 Juillet 2005 (modifié) En quoi c'est compliqué ? ça bloque jusqu'à timeout secondes dans l'attente de données lisibles sur un des flux du tableau de flux passé en paramètre. ça retourne alors le nombre de flux qui sont lisibles et ça modifie le tableau en conséquence. (je suis parti du principe qu'on ne considérait que l'attente pour la lecture, mais il y a aussi l'attente pour l'écriture et les exceptions) Modifié 7 Juillet 2005 par loufoque
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant