Position actuelle: Accueil> Catégories de fonctions> stream_select

stream_select

Exécutez l'appel système SELECT () sur le tableau de flux donné et utilisez le délai d'expiration spécifié par TV_SEC et TV_USEC
Nom:stream_select
Catégorie:Flux
Langage de programmation:php
Description en une ligne:Attendez dans un ensemble donné de flux de fichiers jusqu'à ce qu'un ou plusieurs des flux de fichiers dispose d'un événement lisible, écrivatif ou exceptionnel

Nom de la fonction: Stream_Select ()

Version applicable: PHP 4> = 4.3.0, PHP 5, PHP 7

Description de la fonction: La fonction Stream_Select () est utilisée pour attendre dans un ensemble donné de flux de fichiers jusqu'à ce qu'un ou plusieurs des flux de fichiers aient des événements lisibles, écrivatifs ou exceptionnels. Il s'agit d'une fonction très courante dans la programmation réseau et peut être utilisée pour créer des multiplexeurs d'E / S efficaces.

Syntaxe: int stream_select (Array & $ read, array & $ write, array & $ sauf, int $ tv_sec [, int $ tv_usec = 0])

paramètre:

  • $ lecture: un tableau contenant les flux lisibles à vérifier.
  • $ write: un tableau contenant les flux inscriptibles à vérifier.
  • $ Sauf: un tableau contenant le flux d'exception à vérifier.
  • $ TV_SEC: Définit le nombre de secondes à attendre.
  • $ TV_USEC: Définit le nombre de microsecondes de temps d'attente.

Valeur de retour: le nombre de flux qui se produisent avant le délai d'expiration ou return faux en cas d'erreur.

Exemple:

 $socket1 = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30); $socket2 = stream_socket_client("tcp://www.example.net:80", $errno, $errstr, 30); $socket3 = stream_socket_client("tcp://www.example.org:80", $errno, $errstr, 30); $read = array($socket1, $socket2, $socket3); $write = $except = null; if (stream_select($read, $write, $except, 5)) { foreach ($read as $socket) { $data = fread($socket, 1024); // 对读取到的数据进行处理} } else { // 超时或出错处理}

Dans l'exemple ci-dessus, nous créons trois connexions TCP et les mettons dans le tableau $read . Ensuite, nous appelons stream_select() pour attendre que tous les événements lisibles se produisent sur ces connexions, avec un temps d'attente de 5 secondes. Si un événement lisible se produit dans le délai d'attente, nous utilisons fread() pour lire les données et les traiter. Si un délai d'expiration ou une erreur se produit, nous pouvons le gérer en conséquence au besoin.

Notez que stream_select() bloque, c'est-à-dire que le script en pause pendant l'attente jusqu'à ce que l'événement se produise ou le délai d'attente. Par conséquent, il doit généralement être utilisé en conjonction avec des flux de mode non bloquant pour utiliser pleinement ses avantages.

Fonctions similaires
Articles populaires