PHP에서 스트림은 파일, 네트워크 연결, 메모리 및 기타 유형의 리소스의 추상적 인 표현입니다. 이러한 스트림을 조작하려면 일반적으로 스트림의 컨텍스트를 설정하고 구성해야합니다. 스트림 컨텍스트에는 요청 헤더, 프록시 서버 등과 같은 스트림을 작동 할 때 일부 환경 설정이 포함되어 있습니다. 실제 개발에서는 때때로 이러한 구성 정보를 신속하게 보거나 얻어야하며 PHP에서 제공하는 Stream_Context_get_options 기능을 사용할 수 있습니다.
stream_context_get_options 는 PHP의 내장 기능으로 현재 스트림 컨텍스트에서 모든 구성 정보를 얻습니다. 이 함수는 키가 스트림의 프로토콜 유형 (예 : HTTP , FTP , 파일 등) 인 연관 배열을 반환 하고이 프로토콜 유형의 구성 옵션입니다.
<span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span> ( resource </span><span><span class="hljs-variable">$context</span></span><span> )
</span></span>
매개 변수 : $ context는 스트림 컨텍스트 리소스이며, 일반적으로 stream_context_create () 또는 특정 파일 작동 함수 (예 : Fopen )를 통해 얻는 스트림 컨텍스트 리소스입니다.
반환 값 : 모든 구성 정보가 포함 된 연관 배열을 반환합니다. 컨텍스트에 구성이없는 경우 빈 배열이 반환됩니다.
stream_context_get_options를 사용하려면 먼저 스트림 컨텍스트를 만들어야합니다. 스트림 컨텍스트는 일반적으로 stream_context_create () 함수를 통해 생성되며 다음이 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$options</span></span><span> = [
</span><span><span class="hljs-string">'http'</span></span><span> => [
</span><span><span class="hljs-string">'method'</span></span><span> => </span><span><span class="hljs-string">'GET'</span></span><span>,
</span><span><span class="hljs-string">'header'</span></span><span> => </span><span><span class="hljs-string">'Accept-language: en\r\n'</span></span><span>,
],
];
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
여기서는 요청 메소드 ( get ) 및 요청 헤더 ( 수락 언어 )를 포함하는 HTTP 프로토콜 컨텍스트를 만듭니다.
스트림 컨텍스트가 만들어지면 해당 컨텍스트의 구성 정보는 stream_context_get_options 를 통해 얻을 수 있습니다. 예는 다음과 같습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$options</span></span><span> = [
</span><span><span class="hljs-string">'http'</span></span><span> => [
</span><span><span class="hljs-string">'method'</span></span><span> => </span><span><span class="hljs-string">'GET'</span></span><span>,
</span><span><span class="hljs-string">'header'</span></span><span> => </span><span><span class="hljs-string">'Accept-language: en\r\n'</span></span><span>,
],
];
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-comment">// 스트림 컨텍스트의 구성을 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
출력은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[http] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[method] => GET
[header] => Accept-</span><span><span class="hljs-attr">language</span></span><span>: en
)
)
</span></span>
보시다시피, 반환 된 배열은 HTTP 방법 및 요청 헤더 정보를 포함하여 HTTP 프로토콜에 따라 모든 구성 정보를 보여줍니다.
Stream_Context_get_options 함수는 특히 복잡한 HTTP 요청을 처리 할 때 스트림 컨텍스트의 디버깅 및보기에 매우 적합합니다. 예를 들어, 게시물 요청을 보낼 때 스트림 컨텍스트에 대한 많은 옵션을 설정했을 수 있으며 Stream_Context_get_options는 이러한 설정이 올바른지 쉽게 확인할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$options</span></span><span> = [
</span><span><span class="hljs-string">'http'</span></span><span> => [
</span><span><span class="hljs-string">'method'</span></span><span> => </span><span><span class="hljs-string">'POST'</span></span><span>,
</span><span><span class="hljs-string">'header'</span></span><span> => </span><span><span class="hljs-string">'Content-Type: application/x-www-form-urlencoded\r\n'</span></span><span>,
</span><span><span class="hljs-string">'content'</span></span><span> => </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>([</span><span><span class="hljs-string">'key'</span></span><span> => </span><span><span class="hljs-string">'value'</span></span><span>]),
],
];
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-comment">// 스트림 컨텍스트의 구성을 가져옵니다信息</span></span><span>
</span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_get_options</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-comment">// 구성을 통해 요청을 보냅니다</span></span><span>
</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'http://example.com'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
위의 코드에서 먼저 HTTP 프로토콜에 대한 게시물 요청에 대한 관련 옵션을 구성하고 Stream_Context_get_options를 통해 이러한 구성이 올바른지 확인합니다. 그런 다음 구성과 함께 HTTP 요청은 file_get_contents를 통해 전송됩니다.
stream_context_get_options 함수는 특히 PHP 스트림 작업을 디버깅 할 때 매우 유용한 도구입니다. 스트림 컨텍스트에서 모든 구성 정보를 빠르게 얻을 수있어 개발자가 다양한 옵션이 올바르게 설정되어 있는지 확인할 수 있습니다. 네트워크 요청 또는 파일 작업을 수행 할 때 스트리밍 컨텍스트 구성을 사용하고 얻는 방법을 이해하는 것은 코드 유지 보수성을 개선하고 효율성을 디버깅하는 데 중요합니다.