PHP
Referenzliste
stream_select
Stream Funktionen
Befehl:
int stream_select ( array &$read , array &$write , array &$except , int $tv_sec [, int $tv_usec = 0 ] )
Parameter-Liste:
Beschreibung | |
---|---|
Die Ströme in der read array aufgeführt wird beobachtet, um zu sehen, wenn Zeichen zum Lesen verfügbar sind (genauer, um festzustellen, ob eine Lese nicht blockiert werden - insbesondere ist eine stream-Ressource auch bereit auf End-of-Datei, in diesem Fall eine fread() zurückkehren wird eine Zeichenfolge der Länge Null). | |
Die Ströme in der Schreibzugriff array aufgeführt werden daraufhin überwacht, ob ein Schreibvorgang nicht blockiert werden. | |
Die Ströme in der except aufgeführt array wird für aussergewöhnliche hohe Priorität ("out-of-band") ankommenden Daten beobachtet werden.Sie brauchen nicht jedes Array einzeln an stream_select(). Sie können lassen Sie es aus und verwenden Sie ein leeres Array oder NULL statt. Vergessen Sie auch nicht, dass diese Arrays werden per Referenz übergeben und wird nach stream_select() geändert werden Renditen. | |
Die tv_sec und tv_usec bilden zusammen die Timeout-Parameter, tv_sec gibt die Anzahl der Sekunden, während tv_usec die Anzahl der Mikrosekunden. Die Timeout ist eine Obergrenze für die Höhe der Zeit gebunden, dass stream_select() wartet, bevor er zurückkehrt. Wenn tv_sec und tv_usec sind beide auf 0, stream_select() wird nicht für Daten warten - stattdessen wird es sofort zurück, die den aktuellen Status der Streams. | |
Siehe tv_sec Beschreibung. |
Beschreibung:
Die stream_select()-Funktion akzeptiert Arrays von Bächen und wartet sie den Status ändern. Sein Betrieb ist äquivalent zu der socket_select()-Funktion, ausser dass es wirkt auf Streams.
Aktiv in Version:
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
Hinweis:
Hinweis:
Wenn stream_select() Renditen, die Arrays
read
, write
em> und except
werden geändert, um anzugeben, welche Strom Ressource(n) tatsächlich Status geändert.Wenn Sie / lesen, um einen Strom in den Arrays zurückgegeben schreiben bewusst sein, dass sie nicht unbedingt lesen / schreiben die volle Menge an Daten die Sie angefordert haben. Seien Sie bereit, auch nur in der Lage zu lesen / schreiben ein einziges Byte.
Achten Sie darauf, die ===-Operator bei der Überprüfung für einen Fehler. Seit dem stream_select() kann 0 zurückgeben der Vergleich mit == würde
TRUE
auswerten:<?php
$e = NULL;
if (false === stream_select($r, $w, $e, 0)) {
echo "stream_select() failed\n";
}
?>
Warnung:
Warnung:
Mit einem Timeout-Wert von 0 können Sie sofort den Status abfragen, der Ströme, jedoch ist es nicht eine gute Idee, um eine 0 Timeout-Wert in einer Schleife, wie es zu benutzen wird Ihr Skript zu viel CPU-Zeit verbrauchen.
Es ist viel besser, einen Timeout-Wert von ein paar Sekunden angeben, obwohl, wenn Sie brauchen, um die Überprüfung und Ausführen fremden Codes gleichzeitig mit einem Timeout-Wert von mindestens 200000 Mikrosekunden dazu beitragen, die CPU-Auslastung wird Ihr Skript.
Beachten Sie, dass der Timeout-Wert die maximale Zeit ist, die verstreichen; stream_select() wird zurückkehren, sobald die angeforderten Streams einsatzbereit sind.
Siehe auch:
stream_select() - Beispiel:
Eingabe:
<?php /* Bereiten Sie die Lese-Array */ $read = array($stream1, $stream2); $write = NULL; $except = NULL; if (false === ($num_changed_streams = stream_select($read, $write, $except, 0))) { /* Error handling */ } elseif ($num_changed_streams > 0) { /* Mindestens auf einer der Ströme etwas interessantes passiert */ } ?>
Stream Funktionen