【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 が返されます。

【PHP8.x】stream_select関数の使い方 | いっしー@Webエンジニア