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

作成日: 更新日:

stream_socket_accept関数は、PHPでネットワークサーバーを構築する際に、クライアントからの接続要求を受け入れるために実行する関数です。この関数は、あらかじめstream_socket_server関数などで作成されたサーバー側のソケット(リスニングソケット)に対して、外部からの接続を待ち、接続があった場合にそれを受け入れます。

第一引数には、接続を待つサーバーソケットのリソースを指定します。第二引数には、接続を待つ最大秒数を指定でき、この時間を過ぎても接続がない場合は処理がタイムアウトします。省略するか0を指定すると、無期限に接続を待ち続けます。第三引数には、接続してきたクライアントのアドレスとポート番号を格納するための変数を渡すことができます。

接続が正常に受け入れられると、この関数は新しく確立されたクライアントとの通信に使用できるソケットストリームリソースを返します。このリソースは、freadやfwriteといった通常のファイル操作関数と同様に、クライアントとの間でデータの送受信を行うために利用できます。もし接続の受け入れに失敗した場合は、falseを返します。ネットワークアプリケーションにおいて、クライアントとサーバー間のセッションを確立する上で非常に重要な役割を担います。

基本的な使い方

構文(syntax)

<?php
$serverSocket = STDIN;
$peerName = [];
$clientSocket = stream_socket_accept($serverSocket, 0.0, $peerName);
?>

引数(parameters)

resource $socket, ?float $timeout = null, ?string &$peer_name = null

  • resource $socket: 接続を待ち受けるためのソケットリソース
  • ?float $timeout = null: 接続を待つ最大秒数。NULLの場合は無期限に待ちます。
  • ?string &$peer_name = null: 接続してきたクライアントのホスト名とポート番号が格納される文字列への参照。

戻り値(return)

resource|false

成功すると、受け付けられた接続を表すリソースが返されます。接続に失敗した場合は false が返されます。

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