Aktueller Standort: Startseite> Funktionskategorien> stream_select

stream_select

Führen Sie den Aufruf von Select () System im angegebenen Stream -Array aus und verwenden Sie das von TV_SEC und TV_USEC angegebene Zeitüberschreitungs
Name:stream_select
Kategorie:Strom
Programmiersprache:php
Kurzbeschreibung:Warten Sie in einem bestimmten Satz von Dateiströmen, bis ein oder mehrere der Dateiströme über ein lesbares, beschreibbares oder außergewöhnliches Ereignis verfügen

Funktionsname: Stream_Select ()

Anwendbare Version: Php 4> = 4.3.0, Php 5, Php 7

Funktionsbeschreibung: Die Funktion stream_select () wird verwendet, um in einem bestimmten Satz von Dateiströmen zu warten, bis ein oder mehrere der Dateiströme lesbar, beschreibbar oder außergewöhnliche Ereignisse haben. Es ist eine sehr häufige Funktion bei der Netzwerkprogrammierung und kann verwendet werden, um effiziente E/A -Multiplexer zu erstellen.

Syntax: int stream_select (Array & $ Read, Array & $ Write, Array & $ außer, int $ tv_sec [, int $ tv_usec = 0])

Parameter:

  • $ read: Ein Array mit den lesbaren Streams, die überprüft werden sollen.
  • $ write: Ein Array, das die schriftlichen Streams enthält, die überprüft werden sollen.
  • $ außer: ein Array, das den ausnahmenden Ausnahmestream enthält, der überprüft wird.
  • $ TV_SEC: Legt die Anzahl der Sekunden fest, um zu warten.
  • $ TV_USEC: Legt die Anzahl der Mikrosekunden der Wartezeit fest.

Rückgabewert: Die Anzahl der Streams, die vor der Zeitüberschreitung auftreten, oder bei einem Fehler FALSE zurückgeben.

Beispiel:

 $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 { // 超时或出错处理}

Im obigen Beispiel erstellen wir drei TCP -Verbindungen und setzen sie in das $read -Array ein. Anschließend nennen wir stream_select() , um auf lesbare Ereignisse in diesen Verbindungen mit einer Wartezeit von 5 Sekunden zu warten. Wenn innerhalb der Zeitüberschreitungszeit ein lesbares Ereignis erfolgt, verwenden wir fread() -Funktion, um die Daten zu lesen und zu verarbeiten. Wenn ein Timeout oder ein Fehler auftritt, können wir es bei Bedarf entsprechend verarbeiten.

Beachten Sie, dass stream_select() blockiert, d. H. Das Skript wird die Ausführung während des Wartens pausieren, bis das Ereignis stattfindet oder eine Auszeit. Daher muss es normalerweise in Verbindung mit nicht blockierenden Modusströmen verwendet werden, um seine Vorteile vollständig zu nutzen.

Ähnliche Funktionen
Beliebte Artikel