스트림 컨텍스트는 PHP에서 스트림의 특성 및 동작을 구성하는 데 사용됩니다. 스트림 컨텍스트를 통해 개발자는 다양한 유형의 스트림 작업을 정의하고 스트림 읽기 및 쓰기, 리소스 개방 등을 지정할 수 있습니다. 스트림 컨텍스트는 실제로 스트림 작업과 관련된 다양한 옵션을 설정하는 데 사용하는 스트림 관련 옵션을 포함하는 배열 또는 리소스입니다.
공통 스트림 컨텍스트 설정에는 다음이 포함됩니다.
stream.wrapper_data : 스트림 래퍼의 구성을 지정하는 데 사용됩니다.
HTTP : 요청 헤더, 프록시 서버 등과 같은 HTTP 스트림을 설정하는 데 사용되는 옵션
SSL : 인증서, 비밀번호 등과 같은 SSL 연결을 구성하기위한 관련 옵션.
예를 들어 스트림 컨텍스트를 생성하는 코드는 다음과 같습니다.
<span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"http"</span></span><span> => </span><span><span class="hljs-keyword">array</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>
스트림 컨텍스트는 stream_context_create () 함수를 통해 생성되며 파일 작업 또는 네트워크 스트림 작업에 사용할 수 있습니다.
Stream_Notification_Callback 은 PHP의 스트림과 관련된 콜백 함수입니다. 이 기능은 스트림 작업에서 알림을 수신하고 처리하는 데 사용됩니다. 스트리밍 작업에는 일부 특수 이벤트 (예 : 파일 개방 실패, 네트워크 연결 중단 등)가 포함되면 PHP는 콜백 기능을 통해 개발자에게 알릴 수 있습니다. 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">stream_context_set_option</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>, </span><span><span class="hljs-string">"notification"</span></span><span>, </span><span><span class="hljs-string">"callback"</span></span><span>, </span><span><span class="hljs-string">"stream_notification_callback"</span></span><span>);
</span></span>
stream_notification_callback은 알림 정보를 포함하는 매개 변수를 수신하여 개발자가 흐름 작동의 다른 상태에 따라 반응 할 수 있습니다.
Resource $ stream : 현재 알림과 관련된 스트리밍 리소스를 나타냅니다.
int $ notification_code : 알림 유형은 stream_notify_connect , stream_notify_disconnect 등과 같은 상수로 표시됩니다.
INT $ 심각도 : 알림의 심각성, 일반적으로 정수가 많을수록 문제가 높을수록 문제가 심각하게 나타납니다.
문자열 $ 메시지 : Notified Message, 현재 흐름 상태에 대한 정보를 제공합니다.
콜백 기능의 기능은 개발자가 이러한 알림을 캡처하고 응답 할 수 있도록하는 것입니다. 예를 들어 스트림 연결이 실패하면 개발자는 콜백 함수 에서이 정보를 캡처하고 연결 재 시도, 오류 로그 기록 등과 같은 해당 측정을 수행 할 수 있습니다.
stream_notification_callback 과 스트림 컨텍스트 사이에는 긴밀한 연결이 있습니다. 스트림 컨텍스트의 콜백 설정을 통해 개발자가 스트림 알림을 스트림 작업에 처리하는 메커니즘으로 Stream_Notification_Callback을 통합 할 수 있습니다. 구체적으로, stream_context_set_option 함수를 통해 개발자는 스트림 컨텍스트에서 알림 이벤트에 대한 콜백 함수를 설정할 수 있습니다.
예를 들어, 네트워크 스트림을 만들고 콜백 함수를 설정할 때 개발자는 다음 코드를 사용할 수 있습니다.
<span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"notification"</span></span><span> => </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"callback"</span></span><span> => </span><span><span class="hljs-string">"stream_notification_callback"</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-variable">$fp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://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>, STREAM_CLIENT_CONNECT, </span><span><span class="hljs-variable">$context</span></span><span>);
</span></span>
위의 코드에서 stream_socket_client () 함수는 TCP 연결을 열고 사용자 정의 콜백 함수를 스트림 컨텍스트에 바인딩합니다. 이러한 방식으로, 연결 중에 알림 이벤트가 발생하면 PHP는 자동으로 Stream_Notification_Callback을 호출합니다.
PHP의 Stream_Notification_Callback은 여러 유형의 알림을 캡처 할 수 있습니다. 다음은 몇 가지 일반적인 알림 유형과 그 의미입니다.
stream_notify_connect : 스트림이 성공적으로 연결되었음을 나타냅니다.
stream_notify_disconnect : 스트림이 분리되었음을 나타냅니다.
stream_notify_failure : 스트림 작동이 실패했음을 나타냅니다.
Stream_Notify_auth_Required : 스트리밍 작업에는 인증 정보가 필요함을 나타냅니다.
개발자는 이러한 알림 유형을 기반으로 특정 응답 로직을 작성할 수 있습니다. 예를 들어 연결이 실패하면 다시 연결하려고 시도 할 수 있습니다. 인증 요청이 발생하면 인증 자격 증명 등을 제공 할 수 있습니다.