【PHP8.x】stream_set_blocking関数の使い方

作成日: 更新日:

stream_set_blocking関数は、指定されたストリームのブロッキングモードを設定する関数です。ストリームとは、ファイルやネットワーク接続など、データを読み書きするための抽象的な経路のことです。この関数を使用することで、ストリームからのデータ読み込みやデータ書き込みの際に、プログラムがデータの準備を待機するか、それともすぐに制御を返すかを制御できます。

この関数は二つの引数を取ります。最初の引数には、設定を変更したいストリームリソース(例えば、fopen()などで開かれたファイルハンドルやfsockopen()で確立されたネットワークソケット)を指定します。二番目の引数には真偽値(trueまたはfalse)を渡します。trueを指定するとストリームはブロッキングモードになり、falseを指定するとノンブロッキングモードになります。

ブロッキングモードでは、データが完全に読み込まれるか、書き込みが完了するまでプログラムの実行が一時停止します。これは一般的な動作であり、コードをシンプルに保つことができます。一方、ノンブロッキングモードでは、データがまだ準備できていなくても、すぐに処理を続行し、後で改めてデータの読み書きを試みることができます。これにより、データ待ちの時間中に別の処理を実行するなど、より効率的なプログラムの作成が可能になります。例えば、複数のネットワーク接続を同時に監視し、データが届いた接続から順に処理するといった場面でノンブロッキングモードが特に有用です。

この関数は、モード設定が成功した場合にはtrueを、失敗した場合にはfalseを返します。

基本的な使い方

構文(syntax)

<?php

stream_set_blocking($stream, $enable_blocking);

?>

引数(parameters)

resource $stream, bool $enable

  • resource $stream: ブロッキングモードを設定するストリームリソース
  • bool $enable: true を指定するとブロッキングモードを有効にし、false を指定すると無効にするブール値

戻り値(return)

bool

指定されたストリームリソースのブロッキングモードを設定することに成功した場合はTRUEを、失敗した場合はFALSEを返します。

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