PHPでは、 Stream_Socket_Client()関数を使用して、ネットワーク接続またはUNIXドメインソケット接続を開きます。タイムアウト設定、暗号化、プロキシなどの多くのオプションをサポートします。これらのオプションは、 stream_context_create()によって作成され、 stream_socket_client()にコンテキストとして渡されます。
この記事では、stream_socket_client()関数を使用する方法を紹介し、 stream_context_get_options()を組み合わせてソケット構成を取得および表示します。
まず、 stream_socket_client()のコンテキストを作成する必要があります。コンテキストとは、ネットワーク接続の動作を制御する複数の構成オプションを含む構造です。たとえば、接続のタイムアウト時間を設定したり、SSL暗号化を有効にしたりできます。
// ストリームコンテキストを作成します
$options = [
'http' => [
'method' => 'GET',
'header' => "User-Agent: PHP\r\n",
],
'ssl' => [
'verify_peer' => false, // ピア証明書を確認していません
'verify_peer_name' => false, // ピア証明書を確認していません名称
]
];
$context = stream_context_create($options);
上記のコードでは、HTTP構成とSSL構成を作成します。これにより、接続がピア証明書を確認しないようにします。
次に、 Stream_Socket_Client()を使用してTCP接続を開きます。接続するとき、パラメーターとしてコンテキストを渡します。
// コンテキストで開きます TCP 接続する
$fp = stream_socket_client("tcp://m66.net:80", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
if (!$fp) {
echo "接続する失败: $errno - $errstr\n";
exit;
}
このコードでは、 M66.netのポート80に接続します。接続が成功した後、 $ FPを介してデータを読み書きできます。
接続が確立されたら、 stream_context_get_options()関数を使用して、適用された構成オプションを表示できます。この関数は、すべての構成オプションを含む配列を返します。
// 現在のストリームの構成オプションを取得して表示します
$options = stream_context_get_options($context);
echo '<pre>';
print_r($options);
echo '</pre>';
上記のコードは、現在のストリームの構成オプションを印刷します。たとえば、HTTPおよびSSL構成をセットアップすると、出力は次のようになります。
Array
(
[http] => Array
(
[method] => GET
[header] => User-Agent: PHP
)
[ssl] => Array
(
[verify_peer] =>
[verify_peer_name] =>
)
)
Stream_socket_client()とstream_context_get_options()を組み合わせることにより、ソケット構成を簡単に表示およびデバッグできます。接続タイムアウト、暗号化オプション、またはその他のカスタム構成アイテムを設定しているかどうかにかかわらず、 stream_context_get_options()は、適用された構成を表示するのに役立ちます。
この記事が、PHPでストリーミングコンテキストを使用し、関連する構成を取得する方法をよりよく理解するのに役立つことを願っています。