現在の位置: ホーム> 最新記事一覧> Stream_get_meta_data()を使用して、ストリーム情報を分析します

Stream_get_meta_data()を使用して、ストリーム情報を分析します

M66 2025-05-28

PHPでは、ストリームはファイル、データなどの入力と出力を処理するメカニズムです。ストリームを使用して、ファイル、ネットワークリクエスト、さらにはインメモリデータを処理できます。ストリームの動作を深く分析するには、通常、ストリームの詳細を取得する必要があります。この記事では、 stream_context_get_optionsstream_get_meta_dataを使用して、ストリームの詳細情報を分析する方法に焦点を当てます。

1.フローコンテキストを理解します

PHPでは、ストリームコンテキストは、ストリーム操作の構成情報を含むデータ構造です。 Stream_context_create()関数を介して作成でき、ストリームを開くときにいくつかのオプション(HTTPリクエストヘッダー、プロキシ設定など)を構成するために使用できます。

2。stream_context_get_options関数

stream_context_get_options()関数は、作成されたストリームコンテキストですべてのオプションを取得するために使用されます。これは、ストリームの作成時に渡される特定のパラメーターを表示できるため、ストリーム構成のデバッグに特に便利です。

 <?php
// ストリームコンテキストを作成します,設定 HTTP ヘッダーをリクエストします
$options = [
    'http' => [
        'header' => 'User-Agent: PHP/7.4'
    ]
];
$context = stream_context_create($options);

// コンテキストを取得および表示するオプション
$options = stream_context_get_options($context);
print_r($options);
?>

出力の結果は次のとおりです。

 Array
(
    [http] => Array
        (
            [header] => User-Agent: PHP/7.4
        )
)

3。Stream_get_meta_data関数

Stream_get_meta_data()関数は、ストリームのメタデータを取得するために使用されます。ストリームステータス、エラー情報、書き込み可能かどうかなど、ストリーム状態情報を含む配列を返します。

 <?php
// ファイルストリームを開きます
$file = fopen("example.txt", "r");

// ストリームのメタデータを取得します
$metaData = stream_get_meta_data($file);
print_r($metaData);

// ファイルストリームを閉じます
fclose($file);
?>

出力は次のとおりです。

 Array
(
    [timed_out] => 
    [blocked] => 
    [eof] => 
    [unread_bytes] => 0
    [stream_type] => STDIO
    [wrapper_type] => plainfile
    [wrapper_data] => 
    [stream_type] => STDIO
)

4。Stream_Context_get_optionsstream_get_meta_dataを組み合わせて使用​​します

ストリームの詳細を分析するには、通常、 stream_context_get_optionsstream_get_meta_dataを一緒に使用する必要があります。たとえば、HTTPリクエストを作成する場合、ストリームのメタデータと関連する構成情報を表示することができます。

ネットワークリクエストを介してWebコンテンツを取得し、コンテキストオプションとメタデータと組み合わせたストリームを分析する例を次に示します。

 <?php
// 構成HTTPリクエストオプション
$options = [
    'http' => [
        'method' => 'GET',
        'header' => 'User-Agent: PHP/7.4'
    ]
];
$context = stream_context_create($options);

// ストリームを開き、リクエストを送信します
$url = "http://m66.net/example";  // ドメイン名をに置き換えます m66.net
$stream = fopen($url, 'r', false, $context);

// ストリームのメタデータを取得します
$metaData = stream_get_meta_data($stream);
print_r($metaData);

// コンテキストを取得するためのオプション
$contextOptions = stream_context_get_options($context);
print_r($contextOptions);

// ストリームを閉じます
fclose($stream);
?>

出力は次のとおりです。

 ストリームのメタデータ:
Array
(
    [timed_out] => 
    [blocked] => 
    [eof] => 1
    [unread_bytes] => 0
    [stream_type] => http
    [wrapper_type] => http
    [wrapper_data] => HTTP/1.1 200 OK
    [stream_type] => http
)

コンテキストオプション:
Array
(
    [http] => Array
        (
            [method] => GET
            [header] => User-Agent: PHP/7.4
        )
)

5。概要

Stream_context_get_optionsstream_get_meta_data関数を組み合わせることにより、開発者はストリームの詳細な構成情報とメタデータを簡単に表示できます。この方法は、ネットワークリクエストを行うときにリクエスト構成またはデバッグフローの状態を診断するのに役立ちます。

これらの2つの方法は、HTTPストリームに限定されませんが、他のタイプのストリーム(ファイルストリーム、メモリストリームなど)にも使用できます。これらのツールを手にすると、フローの動作をより適切に分析および制御できます。