PHPでは、 stream_context_get_options関数を使用して、 stream_context_createによって作成されたストリームコンテキストのすべてのオプションを取得できます。これらのオプションは配列として返され、各要素はストリームの設定を表します。 Stream_context_get_optionsを使用する場合、多くの開発者が問題に遭遇する可能性があります。プロトコル名は返された配列構造で何を表していますか?この質問は、特にネットワークリクエストを行う場合、ストリームの動作をどのように理解するかに直接関係しています。
まず、 Stream_Context_Get_options関数の基本的な使用法を確認しましょう。この関数は、ストリームコンテキストリソースパラメーターを取得し、そのコンテキストのすべてのオプションを返します。これらのオプションは通常、連想配列として返され、各プロトコル(HTTP、FTPなど)は一連のオプションに対応します。
<?php
// aを作成します HTTP コンテキストをストリーミングします
$options = [
'http' => [
'method' => 'GET',
'header' => 'Content-Type: application/json'
]
];
$context = stream_context_create($options);
// コンテキストでオプションを取得します
$contextOptions = stream_context_get_options($context);
print_r($contextOptions);
?>
出力は以下に似ています。
Array
(
[http] => Array
(
[method] => GET
[header] => Content-Type: application/json
)
)
ご覧のとおり、返された配列は、キー名がプロトコル名(この場合はHTTP )である配列であり、値はプロトコルの特定の設定です。
stream_context_get_optionsによって返される配列では、プロトコル名は実際には、ストリームで使用されるプロトコルタイプを表す配列の鍵です。これは、ストリーム操作の動作ルールと構成可能なオプションを示し、特定のプロトコルに関連付けられたパラメーターは通常、プロトコル名によって編成されます。たとえば、 HTTPプロトコルは通常、HTTP要求(要求方法、ヘッダー情報など)に関連する設定に拘束され、 FTPプロトコルはFTPに関連する設定(ユーザー名、パスワード、パッシブモードなど)にバインドされます。
言い換えれば、プロトコル名は、さまざまなプロトコルのオプションを整理し、同クラスのコンテキストが複数のプロトコル設定を同時にサポートするのに役立つ分類タグのようなものです。
たとえば、ストリーミングコンテキストを作成すると、HTTPプロトコルとFTPプロトコルの両方を構成できます。
<?php
$options = [
'http' => [
'method' => 'GET',
'header' => 'Content-Type: application/json',
],
'ftp' => [
'username' => 'user',
'password' => 'pass',
'passive' => true,
],
];
$context = stream_context_create($options);
// コンテキストでオプションを取得します
$contextOptions = stream_context_get_options($context);
print_r($contextOptions);
?>
出力は次のとおりです。
Array
(
[http] => Array
(
[method] => GET
[header] => Content-Type: application/json
),
[ftp] => Array
(
[username] => user
[password] => pass
[passive] => 1
)
)
ここでは、 HTTPとFTPは2つの異なるプロトコル構成を表し、それぞれが独自の設定を備えています。これは、異なるプロトコルオプションを区別する上でプロトコル名の重要性も示しています。
プロトコル名は、 PHPでサポートされているプロトコルに従って決定されます。例えば:
HTTP :HTTPプロトコルを表します。これは、通常、HTTP要求方法、ヘッダー情報などの設定に使用されます。
FTP :FTPプロトコルを表します。これは、通常、FTPログイン情報、アップロード/ダウンロードモードなどを設定するために使用されます。
SSL :ネットワーク通信にセキュリティを追加するために使用されるSSL/TLS暗号化された接続を意味します。
これらのプロトコル名は任意の選択ではなく、ストリーミングコンテキストを処理するときにPHPで指定され、異なるプロトコルのオプション構成が正しく編成されるようにします。たとえば、 HTTPオプションを設定すると、PHPはHTTPプロトコルのルールに従い、設定に基づいて対応するリクエストを作成する必要があることがわかります。
実際の開発では、ストリーミングコンテキストは多くの場合、外部リソース(ファイル、URLなど)に関連付けられているため、プロトコル名の役割を理解することが非常に重要です。たとえば、HTTPリクエストを作成する場合、 HTTPプロトコルオプションを設定することにより、リクエストヘッダー、リクエストメソッドなどを制御できます。 FTP操作を実行すると、 FTPプロトコルオプションを使用してユーザー名とパスワード情報を設定できます。
コードのURLをドメイン名m66.netに置き換える必要があるとします。次のように行うことができます。