현재 위치: > 최신 기사 목록> 파일 스트림의 메타 데이터를 얻기 위해 Stream_get_meta_data를 올바르게 사용하는 방법은 무엇입니까?

파일 스트림의 메타 데이터를 얻기 위해 Stream_get_meta_data를 올바르게 사용하는 방법은 무엇입니까?

gitbox 2025-09-17

stream_get_meta_data를 사용하여 파일 스트림의 메타 데이터를 올바르게 얻는 방법은 무엇입니까?

PHP에서 Stream_get_meta_data는 스트림 리소스에 대한 메타 데이터 정보를 얻을 수있는 매우 유용한 기능입니다. 이 메타 데이터에는 상태, 유형 및 스트림이 열려 있는지에 대한 중요한 정보가 포함되어 있습니다. 이 기능을 올바르게 사용하는 방법을 이해하는 것은 특히 파일 스트림이나 다른 유형의 스트림 (예 : 네트워크 스트림)을 처리 해야하는 경우 개발자에게 필수적입니다.

파일 스트림 메타 데이터 란 무엇입니까?

파일 스트림 메타 데이터는 스트림 자체에 대한 추가 정보를 나타냅니다. 스트림의 메타 데이터에는 일반적으로 스트림의 상태, 파일 유형, 인코딩 메소드, 개방 모드 등이 포함됩니다. Stream_get_Meta_Data 함수는이 정보를 얻는 데 사용됩니다. 파일 내용을 직접 반환하지는 않지만 스트림의 기본 상태를 제공합니다.

stream_get_meta_data 의 기본 사용

stream_get_meta_data 함수의 기본 구문은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">stream_get_meta_data</span></span><span>(resource </span><span><span class="hljs-variable">$stream</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $ stream 매개 변수는 유효한 파일 스트림 리소스입니다 (예 : fopen () , stream_socket_client () 등과 같은 함수를 통해 생성 된 스트림 리소스 등).

이 함수는 스트림의 메타 데이터가 포함 된 배열을 반환합니다. 일반적인 메타 데이터 키에는 다음이 포함됩니다.

  • timed_out : 스트림이 시간이 내렸는지 여부를 나타내는 부울 값.

  • 차단 : 부울 값, 스트림이 차단 된 상태인지를 나타냅니다.

  • EOF : 스트림이 파일의 끝에 도달했는지 여부를 나타내는 부울 값.

  • 스트림 유형 (예 : TCP , UDP , 파일 등)을 나타내는 String : String.

  • WRAPPER_TYPE : 스트림의 캡슐화 유형을 나타내는 문자열.

  • WRAPPER_DATA : 캡슐화 된 데이터 (예 : HTTP 응답 헤더 등)에 대한 추가 정보가 포함 된 문자열.

  • 모드 : 문자열, 파일 개방 모드 (예 : r , w , a 등)를 나타냅니다.

예 : 파일 스트림의 메타 데이터를 가져옵니다

실제 예제를 사용하여 스트림 스트림의 메타 데이터를 얻기 위해 Stream_get_meta_data를 사용하는 방법을 이해해 봅시다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 파일 스트림을 엽니 다</span></span><span>
</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"example.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);

</span><span><span class="hljs-comment">// 파일 스트림의 메타 데이터를 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$metadata</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_get_meta_data</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);

</span><span><span class="hljs-comment">// 출력 메타 데이터</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$metadata</span></span><span>);

</span><span><span class="hljs-comment">// 파일 스트림을 닫습니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

위의 예에서 먼저 fopen ()을 사용하여 파일 example.txt를 열고 stream_get_meta_data ()를 사용하여 파일 스트림의 메타 데이터를 얻습니다. 반환 된 $ 메타 데이터 배열에는 다음 내용이 포함될 수 있습니다.

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [timed_out] =&gt; 
    [blocked] =&gt; 
    [eof] =&gt; 
    [stream_type] =&gt; file
    [wrapper_type] =&gt; 
    [wrapper_data] =&gt; 
    [mode] =&gt; r
    [seekable] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [uri] =&gt; example.txt
)
</span></span>

일반적인 메타 데이터 필드 분석

  • Timed_out : 네트워크 스트림 인 경우 Timed_out은 타임 아웃으로 인해 스트림이 중단되는지 여부를 알려줍니다. 파일 스트림의 경우이 필드는 일반적으로 비어 있습니다.

  • 차단 : 스트림이 차단 모드인지를 나타냅니다. 일반적으로 네트워크 스트림에 사용됩니다. 파일 스트림은 일반적으로 이것의 영향을받지 않습니다.

  • EOF :이 필드는 파일 끝까지 읽을 때 true를 반환합니다. 그렇지 않으면 거짓 .

  • stream_type : 스트림의 유형을 나타냅니다. 예를 들어, 일반 파일 스트림의 경우 파일이 여기에서 반환됩니다. 네트워크 연결 인 경우 TCP 또는 UDP를 반환 할 수 있습니다.

  • 모드 : r 과 같은 스트림을 열 때 모드를 나타냅니다. r은 읽기 전용을 나타내고, w는 쓰기 전용을 나타내고, a는 첨부 쓰기 등을 나타냅니다.

Stream_get_meta_data를 사용하여 네트워크 흐름을 처리하십시오

파일 스트림을 처리하는 것 외에도 Stream_get_meta_data를 사용하여 네트워크 스트림의 메타 데이터를 얻을 수도 있습니다. HTTP 요청 스트림을 예로 들어 보면 코드 예제는 다음과 같습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// a TCP 연결하다</span></span><span>
</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://www.example.com:80"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>);

</span><span><span class="hljs-comment">// 获取연결하다流的元数据</span></span><span>
</span><span><span class="hljs-variable">$metadata</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_get_meta_data</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);

</span><span><span class="hljs-comment">// 출력 메타 데이터</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$metadata</span></span><span>);

</span><span><span class="hljs-comment">// 스트림을 닫으십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

이 예에서는 Stream_Socket_Client를 사용하여 TCP 연결을 생성하고 연결의 메타 데이터를 가져옵니다. 반환 된 메타 데이터에는 네트워크 흐름에 대한 추가 정보가 차단되었는지, 시간 초과 등을 포함 할 수 있습니다.

주목해야 할 것

  • 파일 스트림 대 네트워크 스트림 : 파일 스트림 및 네트워크 스트림의 경우 Stream_get_meta_data 에서 반환 한 메타 데이터는 다릅니다. 네트워크 흐름의 경우 메타 데이터는 네트워크 상태에 더 많은주의를 기울이는 반면 파일 흐름의 경우 주로 파일의 개방 모드와 파일 끝에서 식별에 관심이 있습니다.

  • 파일 흐름 정보 가져 오기 : 파일의 EOF (파일 끝) 필드는 파일을 처리 할 때 특히 유용하므로 파일을 읽을 때 파일 범위를 넘어서 콘텐츠를 읽지 않도록 도와줍니다.

  • 성능 : Stream_Get_Meta_Data는 매우 유용한 정보를 제공하지만 자주 호출하면 특히 큰 파일 또는 고주파 네트워크 요청에 대해 추가 성능 오버 헤드를 가져올 수 있습니다. 정상적인 경우에는 필요할 때만 전화하는 것이 좋습니다.

요약

Stream_get_meta_data는 스트림을 처리 할 때 매우 실용적인 기능입니다. 스트림의 메타 데이터를 빠르게 얻고 스트림의 상태를 이해하는 데 도움이 될 수 있습니다. 이 기능을 적절하게 사용함으로써 개발자는 스트림 작업을보다 효율적으로 디버그하여 스트림을 읽거나 쓰는 시점에 프로그램의 안정성과 정확성을 보장 할 수 있습니다. 파일 스트림, 네트워크 스트림 또는 기타 유형의 스트림이든 메타 데이터를 올바르게 얻고 해석하는 방법을 이해하는 것은 효율적인 PHP 프로그램을 작성하는 데 중요합니다.