Version complète: sur le forum Webmaster Hub : Paralléliser des requêtes
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Poppy
Yep smile.gif

Je voulais effectuer plusieurs requêtes simultannément whistling.gif

stream_select() : j'ai pas bien compris comment on s'en servait, quelqu'un pourrait m'éclairer ? blush.gif

Merci d'avance tongue.gif
Dnegel666
Essai http://php.mirrors.ilisys.com.au/manual/fr...ream-select.php
Poppy
J'avais déjà vu ça, mais j'aimerai un exemple concret blush.gif
loufoque
par exemple, pour récupérer dans un tableau de chaînes les données lisibles sur plusieurs flux :

CODE
$buffer = array();
$remove = array();
$streams = array($sd1, $sd2, $sd3);
$timeout = NULL; // on peut mettre un timeout en secondes
while(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)
   }
}
Poppy
Oulala, difficile à utiliser dis moi smile.gif

Merci tout de même wink.gif
loufoque
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)
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.