Du bist hier: Tips » Scripte » PHP
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:
NameBeschreibung
readDie 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).
writeDie Ströme in der Schreibzugriff array aufgeführt werden daraufhin überwacht, ob ein Schreibvorgang nicht blockiert werden.
exceptDie 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.
tv_secDie 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.
tv_usecSiehe 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 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$e0)) {
    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:
Set Sperrung / Non-Blocking-Modus auf einem Stream
 

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