PHP에서 Stream_Context_get_options 함수는 Stream_context_create 에서 생성 한 스트림 컨텍스트에서 모든 옵션을 얻는 데 사용될 수 있습니다. 이 옵션은 배열로 반환되며 각 요소는 스트림 설정을 나타냅니다. 많은 개발자가 Stream_Context_get_options를 사용할 때 문제가 발생할 수 있습니다. 프로토콜 이름은 반환 된 배열 구조에서 무엇을 나타내나요? 이 질문은 특히 네트워크 요청을 할 때 스트림의 동작을 이해하는 방법과 직접 관련이 있습니다.
먼저 Stream_Context_get_options 함수의 기본 사용법을 검토해 봅시다. 이 기능은 스트림 컨텍스트 리소스 매개 변수를 사용하고 해당 컨텍스트에 대한 모든 옵션을 반환합니다. 이러한 옵션은 일반적으로 각 프로토콜 (예 : HTTP, FTP 등)이 다양한 옵션에 해당하는 연관 배열로 반환됩니다.
<?php
// a HTTP 스트림 컨텍스트
$options = [
'http' => [
'method' => 'GET',
'header' => 'Content-Type: application/json'
]
];
$context = stream_context_create($options);
// 맥락에서 옵션을 얻습니다
$contextOptions = stream_context_get_options($context);
print_r($contextOptions);
?>
출력은 다음과 유사합니다.
Array
(
[http] => Array
(
[method] => GET
[header] => Content-Type: application/json
)
)
보시다시피, 반환 된 배열은 키 이름이 프로토콜 이름 (이 경우 HTTP )이고 값이 프로토콜의 특정 설정 인 배열입니다.
stream_context_get_options 가 반환 한 배열에서 프로토콜 이름은 실제로 배열의 키이며 스트림에서 사용하는 프로토콜 유형을 나타냅니다. 스트림 작업에 대한 동작 규칙 및 구성 가능한 옵션을 나타내며 특정 프로토콜과 관련된 매개 변수는 일반적으로 프로토콜 이름으로 구성됩니다. 예를 들어, HTTP 프로토콜은 일반적으로 HTTP 요청 (예 : 요청 메소드, 헤더 정보)과 관련된 설정에 바인딩되며 FTP 프로토콜은 FTP (예 : 사용자 이름, 암호, 수동 모드 등)와 관련된 설정에 바인딩됩니다.
다시 말해, 프로토콜 이름은 다른 프로토콜에 대한 옵션을 구성하는 데 도움이되는 분류 태그와 같습니다. 동일한 클래스 컨텍스트가 동시에 여러 프로토콜 설정을 지원할 수 있습니다.
예를 들어 스트리밍 컨텍스트를 만들 때 HTTP 및 FTP 프로토콜을 모두 구성 할 수 있습니다.
<?php
$options = [
'http' => [
'method' => 'GET',
'header' => 'Content-Type: application/json',
],
'ftp' => [
'username' => 'user',
'password' => 'pass',
'passive' => true,
],
];
$context = stream_context_create($options);
// 맥락에서 옵션을 얻습니다
$contextOptions = stream_context_get_options($context);
print_r($contextOptions);
?>
출력은 다음과 같습니다.
Array
(
[http] => Array
(
[method] => GET
[header] => Content-Type: application/json
),
[ftp] => Array
(
[username] => user
[password] => pass
[passive] => 1
)
)
여기서 HTTP 및 FTP는 각각 고유 한 설정을 갖는 두 가지 다른 프로토콜 구성을 나타냅니다. 이것은 또한 다른 프로토콜 옵션을 구별 할 때 프로토콜 이름의 중요성을 보여줍니다.
프로토콜 이름은 PHP가 지원하는 프로토콜에 따라 결정됩니다. 예를 들어:
HTTP : HTTP 요청 방법, 헤더 정보 등을 설정하는 데 일반적으로 사용되는 HTTP 프로토콜을 나타냅니다.
FTP : FTP 프로토콜을 나타내며 일반적으로 FTP 로그인 정보, 업로드/다운로드 모드 등을 설정하는 데 사용됩니다.
SSL : 네트워크 통신에 보안을 추가하는 데 사용되는 SSL/TLS 암호화 된 연결을 의미합니다.
이러한 프로토콜 이름은 선택하기가 임의적이지 않으며 스트리밍 컨텍스트를 처리 할 때 PHP에 의해 지정되어 다른 프로토콜의 옵션 구성이 올바르게 구성되도록합니다. 예를 들어, HTTP 옵션을 설정하면 PHP는 HTTP 프로토콜의 규칙을 따라야하고 설정에 따라 해당 요청을 구축해야한다는 것을 알게됩니다.
실제 개발에서 스트리밍 컨텍스트는 종종 외부 리소스 (예 : 파일, URL)와 관련되므로 프로토콜 이름의 역할을 이해하는 것이 매우 중요합니다. 예를 들어, HTTP 요청을 할 때 HTTP 프로토콜 옵션을 설정하여 요청 헤더, 요청 메소드 등을 제어 할 수 있습니다. FTP 작업을 수행하는 경우 FTP 프로토콜 옵션을 통해 사용자 이름 및 비밀번호 정보를 설정할 수 있습니다.
코드의 URL을 도메인 이름 M66.net 으로 바꿔야한다고 가정 해 봅시다. 다음과 같이 할 수 있습니다.