【PHP8.x】pfsockopen関数の使い方
作成日: 更新日:
pfsockopen関数は、永続的なインターネットソケットまたはUnixドメインソケット接続を確立する処理を実行する関数です。この関数は、基本的な動作においてfsockopen()
関数と非常によく似ていますが、最も大きな違いは接続を「永続化」する点にあります。通常のfsockopen()
では、PHPスクリプトの実行が終了すると確立した接続も閉じられます。しかし、pfsockopen()
で確立された接続は、スクリプト終了後もすぐには閉じられずに保持され、次に同じホスト、ポート、タイムアウトで接続要求があった場合に、その保持されている接続が再利用されます。これにより、毎回新しい接続を確立するための時間やシステムリソースのオーバーヘッドを削減でき、特に頻繁に同じサーバーへ接続するようなアプリケーションのパフォーマンスを向上させることができます。接続先のホスト名やポート番号などを引数として指定し、接続に成功した場合は、その後の通信に利用できるファイルポインタを返します。接続に失敗した場合はfalse
を返すため、戻り値を確認して適切なエラー処理を行うことが重要です。
基本的な使い方
構文(syntax)
pfsockopen(
string $hostname,
int $port = -1,
?int &$error_code = null,
?string &$error_message = null,
?float $timeout = null
): resource|false
引数(parameters)
string $hostname, int $port = -1, ?int &$error_code = null, ?string &$error_message = null, ?float $timeout = null
- string $hostname: 接続先のホスト名またはIPアドレスを指定します
- int $port = -1: 接続先のポート番号を指定します。デフォルトは -1 で、プロトコルによって異なります
- ?int &$error_code = null: エラーが発生した場合に、エラーコードが格納される整数型の変数への参照を指定します
- ?string &$error_message = null: エラーが発生した場合に、エラーメッセージが格納される文字列型の変数への参照を指定します
- ?float $timeout = null: 接続試行のタイムアウト時間を秒単位で指定します
戻り値(return)
resource|false
成功した場合、ソケットリソースを返します。失敗した場合は false を返します。