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

作成日: 更新日:

stream_socket_client関数は、指定されたネットワークアドレスに対してクライアント側のソケット接続を開始する関数です。この関数は、Webサーバーやデータベースサーバー、あるいはその他のネットワークサービスなど、外部のサーバーと通信を行いたい場合に利用されます。

具体的には、接続先のアドレス(例: tcp://example.com:80unix:///tmp/mysocket.sock のようなプロトコル、ホスト、ポート番号を含む形式)を第一引数に指定することで、そのアドレスへの接続を試みます。接続に成功すると、データの読み書きが可能なストリームリソースを返します。このリソースを使用して、接続先のサーバーとデータを送受信することができます。

第二引数と第三引数には、参照渡しでエラーコードとエラーメッセージを受け取ることができ、接続に失敗した際の具体的な原因を把握するのに役立ちます。第四引数では、接続を確立するまでのタイムアウト時間を秒単位で設定することが可能です。また、第五引数のフラグを用いることで、非同期接続(接続が完了するのを待たずに処理を続行する)のような特別な挙動を指定することもできます。

この関数は、PHPで低レベルなネットワーク通信を実装する際の基本的な構成要素であり、外部サービスとの連携やカスタムプロトコルを用いた通信など、幅広いネットワークプログラミングの場面で活用されます。接続が確立できない場合はfalseを返すため、戻り値を確認してエラーハンドリングを行うことが重要です。

基本的な使い方

構文(syntax)

stream_socket_client(
    string $address,
    int &$error_code = null,
    string &$error_message = null,
    ?float $timeout = null,
    int $flags = STREAM_CLIENT_CONNECT,
    ?resource $context = null
): resource|false

引数(parameters)

string $address, ?int &$error_code = null, ?string &$error_message = null, ?float $timeout = null, int $flags = 4, ?resource $context = null

  • string $address: 接続先のネットワークアドレスを指定します。例: "tcp://example.com:80", "udp://192.168.1.100:1234"
  • ?int &$error_code = null: エラー発生時にエラーコードが格納される変数への参照です。
  • ?string &$error_message = null: エラー発生時にエラーメッセージが格納される変数への参照です。
  • ?float $timeout = null: 接続試行のタイムアウト時間を秒単位で指定します。
  • int $flags = 4: ソケットの動作を変更するためのフラグを指定します。デフォルトはSTREAM_CLIENT_CONNECT | STREAM_CLIENT_NONBLOCK です。
  • ?resource $context = null: ストリームコンテキストを指定します。

戻り値(return)

resource|false

ストリームソケットクライアント接続が成功した場合、その接続を表すリソースを返します。接続に失敗した場合は false を返します。

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