Partage
  • Partager sur Facebook
  • Partager sur Twitter

[DUR] Socket: la commande socket_select...

Utilisateurs non confirmés s'abstenir

    7 mai 2006 à 16:23:06

    Salut à tous
    Je suis en train de développer un bot irc en php. Et j'ai besoin de faire un socket_read() sur deux sockets simultanément, j'ai bien trouvé la fonction socket_select() mais je n'arrive pas à l'utiliser. A ce que j'ai compris, elle fait un socket read sur toutes les sockets qui auront été au préalablement insérées dans un tableau.
    Est-ce ça? Comment utiliser cette fonction ?
    • Partager sur Facebook
    • Partager sur Twitter
      7 mai 2006 à 17:14:32

      Ca veut dire quoi faire un socket_read sur 2 sockets simultanément ?

      socket_read($socket1, 1024);
      socket_read($socket2, 1024);

      C'est pas simultané mais pas loin.
      • Partager sur Facebook
      • Partager sur Twitter
        7 mai 2006 à 18:11:50

        En fait, mes socket sont bloquantes, donc à la lecture du premier socket_read le code va se freezer jusqu'a ce qu'il ya it une connexion; Je voudrais faire deux socket_read simultanés, c'est à dire en lancer deux, et lire le premier qui obtiendra une réponse. Si tu comprends toujours pas je détaille.
        • Partager sur Facebook
        • Partager sur Twitter
          7 mai 2006 à 19:59:34

          http://www.php.net/manual/fr/function.socket-select.php#56241

          Avec ca tu peux comprendre, il a bien commenté le gus

          $array = array($sock1, $sock2);
          $nb = socket_select($array);

          echo $nb; // affiche le nombre de socket qui ont changé (que tu peux lire)

          print_r($array); // affiche un tableau qui contient toutes les sockets qui ont changé
          • Partager sur Facebook
          • Partager sur Twitter
            7 mai 2006 à 19:59:35

            D'après la doc', socket_select() se contente uniquement d'attendre qu'une socket ait de "nouvelles informations", enfin, je veux dire qu'elle ait reçue de nouvelles données. Elle bloque l'execution jusqu'à ce que ça arrive ou que le timeout soit atteint.

            Si tu cherches plutôt à faire qu'un appel à socket_read() ne soit pas bloquant, socket_set_nonblock() semble plus approprié (pas testé par contre). Je crois que socket_read() renvoi des chaines vides quand ça arrive.
            • Partager sur Facebook
            • Partager sur Twitter
              13 mai 2006 à 12:34:32

              Pour ce qui est de socket_nonblock et block je sait manipuler. En fait j'ai fait autrement pour attendre des infos de deux sockets à la fois..
              • Partager sur Facebook
              • Partager sur Twitter

              [DUR] Socket: la commande socket_select...

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown