【PHP8.x】stream_set_timeout関数の使い方
stream_set_timeout関数は、ストリームリソースに対するタイムアウトを設定する関数です。具体的には、ソケット、ファイル、パイプなどのストリームに対して、読み込みまたは書き込み操作が指定された秒数内に完了しない場合にタイムアウトとみなされるように設定します。
この関数は、ストリームがブロックモードで動作している場合に特に重要です。ブロックモードでは、読み込みまたは書き込み操作は、データが利用可能になるか、またはタイムアウトが発生するまで処理を停止します。stream_set_timeout関数を使用することで、長時間応答のないストリームを適切に処理し、プログラムが無限に停止するのを防ぐことができます。
引数には、タイムアウトを設定するストリームリソース、タイムアウトの秒数(seconds
)、およびマイクロ秒(microseconds
)を指定します。マイクロ秒は、秒数未満の精度でタイムアウトを設定するために使用されます。
タイムアウトが発生した場合、ストリームリソースに関連付けられたメタデータが更新され、timed_out
フラグが設定されます。このフラグは、stream_get_meta_data関数を使用して確認できます。タイムアウトが発生しても、エラーが発生するわけではありません。プログラムは処理を継続できますが、タイムアウトが発生したことを認識し、適切な対応を行う必要があります。
stream_set_timeout関数は、ネットワークソケットやファイルI/Oなど、様々なストリーム処理において、システムの安定性と応答性を維持するために不可欠な機能を提供します。システムエンジニアは、この関数を適切に使用することで、信頼性の高いアプリケーションを開発することができます。
基本的な使い方
構文(syntax)
stream_set_timeout(resource $stream, int $seconds, int $microseconds = 0): bool
引数(parameters)
$stream, int $seconds, int $microseconds = 0
- resource|object $stream: タイムアウトを設定するストリームリソースまたはオブジェクト
- int $seconds: 秒単位のタイムアウト値
- int $microseconds = 0: マイクロ秒単位のタイムアウト値(デフォルトは0)
戻り値(return)
bool
stream_set_timeout関数は、ストリーム操作のタイムアウトを設定し、成功した場合はtrueを、失敗した場合はfalseを返します。