PHP에서 Stream은 파일, 데이터 등의 입력 및 출력을 처리하는 메커니즘입니다. 스트림을 사용하여 파일, 네트워크 요청 및 메모리 내 데이터를 처리 할 수 있습니다. 스트림의 동작을 깊이 분석하려면 일반적으로 스트림의 세부 사항을 얻어야합니다. 이 기사는 Stream_Context_get_options 및 Stream_get_meta_data를 사용하여 스트림의 자세한 정보를 분석하는 방법에 중점을 둡니다.
PHP에서 스트림 컨텍스트는 스트림 작동의 구성 정보를 포함하는 데이터 구조입니다. stream_context_create () 함수를 통해 만들 수 있으며 스트림을 열 때 일부 옵션을 구성하는 데 사용됩니다 (예 : HTTP 요청 헤더, 프록시 설정 등).
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
)
)
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
)
스트림의 세부 사항을 분석하려면 일반적으로 stream_context_get_options 와 stream_get_meta_data를 함께 사용해야합니다. 예를 들어, HTTP 요청을 할 때 스트림의 메타 데이터와 관련 구성 정보를 볼 수 있습니다.
다음은 네트워크 요청을 통해 웹 컨텐츠를 얻고 컨텍스트 옵션 및 메타 데이터와 결합 된 스트림 분석의 예입니다.
<?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
)
)
Stream_Context_get_options 와 stream_get_meta_data 함수를 결합하여 개발자는 세부 구성 정보와 스트림의 메타 데이터를 쉽게 볼 수 있습니다. 이 메소드는 네트워크 요청을 할 때 요청 구성 또는 디버깅 흐름을 진단하는 데 도움이 될 수 있습니다.
이 두 가지 방법은 HTTP 스트림에만 국한되지 않지만 다른 유형의 스트림 (예 : 파일 스트림, 메모리 스트림 등)에도 사용할 수 있습니다. 이러한 도구를 사용하면 흐름의 동작을 더 잘 분석하고 제어 할 수 있습니다.