Поток контекста в PHP - что это?

Я искал часы, и я не могу понять, что такое "контекст потока" на PHP. Я пытаюсь использовать API, и он предполагает использование этого "контекста потока".

В документации написано:

Контекст представляет собой набор параметров и специфических параметров оболочки, которые изменяют или улучшают поведение потока.

  • Параметр того, что?
  • Что подразумевается под опцией "для оболочки"?
  • Какой поток?

Вот код, о котором я говорю:

// Encode the credentials and create the stream context.
$auth = base64_encode("$acctKey:$acctKey");
$data = array(
'http' => array(
'request_fulluri' => true,
// ignore_errors can help debug – remove for production. This option added in PHP 5.2.10
'ignore_errors' => true,
'header' => "Authorization: Basic $auth")
);
$context = stream_context_create($data);
// Get the response from Bing.
$response = file_get_contents($requestUri, 0, $context);

Ответ 1

  • Параметр контекста, который изменяет свойства потока.

  • Параметры специфичны для любой оболочки, используемой потоком. К примерам относятся файлы, все различные URI-коды php://, HTTP-обертка (например, когда вы делаете file_get_contents('http://example.com') - это не то же самое, что file_get_contents('some-file.txt'))

  • Любой поток!

В этом случае контекст потока передается на file_get_contents, чтобы сообщить ему отправить этот заголовок авторизации и эти параметры в оболочку, что позволяет file_get_contents получать содержимое из URL-адресов HTTP.

Вы можете найти список параметров контекста HTTP на веб-сайте PHP.

Ответ 2

Мне потребовалось некоторое время, чтобы понять параметры контекста потока и оболочки PHP. Я написал статью о том, что помогло мне, наконец, обернуть мой мозг вокруг как понять параметры и обтекатели контекста потока PHP. Надеюсь, это поможет.

Чтобы правильно обрабатывать все, что происходит по линии (потоковые данные), вам понадобится соответствующий код для обработки различных видов передаваемых элементов (типов данных). Инструментами для обработки каждого типа данных типа являются "параметры".

"Контекст" определяется тем, что проходит (потоковым). Поэтому для разных "контекстов" (видов элементов), которые "передаются" (передаются) "параметры" (необходимые инструменты для обработки), "тип данных" (вид элемента) будет изменяться.

Термин контекст просто ссылается на то, что для разных типов данных ситуация уникальна с ее собственными требуемыми параметрами.

Оболочка потока PHP потребует контекста, чтобы узнать, какие параметры необходимы для обработки типа данных.

Ответ 3

  • http, request_fulluri, ignore_errors, заголовок - все параметры. Они меняют способ работы функции (file_get_contents в этом случае).

  • Параметр, специфичный для обертки, похож на "http" - вы не использовали бы это в файловом потоке файловой системы, так как это не применимо.

  • Поток - это передача самих данных, которая возникает, когда file_get_contents открывает соединение, передает все и т.д.