【PHP8.x】stream_select関数の使い方
作成日: 更新日:
『stream_select関数は、指定されたストリームの配列を監視し、いずれかのストリームの状態が変化するまで待機する処理を実行する関数です。この関数は、主にネットワークソケットのような複数のI/Oリソースを同時に、かつ効率的に扱うために使用されます。例えば、複数のクライアントからの接続を同時に待ち受けるサーバープログラムなどで役立ちます。一つの処理の完了を待つことで他の処理が停止してしまう「ブロッキング」を防ぎ、応答性の高いアプリケーションを構築できます。関数には、読み込みを監視するストリームの配列、書き込みを監視するストリームの配列、例外を監視するストリームの配列、そしてタイムアウト時間を指定します。指定したストリームのいずれかでデータの読み込みや書き込みが可能になるか、あるいはタイムアウトすると、関数は処理を返します。その際、引数で渡された配列の中身は、実際に状態が変化したストリームのみを含むように書き換えられます。これにより、どのストリームに対して次の操作を行うべきかを判別できます。戻り値は状態が変化したストリームの総数で、タイムアウトした場合は0が返されます。
基本的な使い方
構文(syntax)
stream_select(?array &$read, ?array &$write, ?array &$except, ?int $seconds, int $microseconds = 0): int|false
引数(parameters)
?array &$read, ?array &$write, ?array &$except, ?int $seconds, ?int $microseconds = null
- array &$read: 読み込みを監視するストリームの配列
- array &$write: 書き込みを監視するストリームの配列
- array &$except: 例外を監視するストリームの配列
- int $seconds: タイムアウトまでの秒数
- int $microseconds: タイムアウトまでのマイクロ秒数
戻り値(return)
int|false
現在、選択可能なストリーム(読み取り、書き込み、または例外)の数が返されます。タイムアウトが発生し、何も選択されなかった場合は 0 が返されます。エラーが発生した場合は false が返されます。