PHP中的流上下文 - 它是什么?

时间:2013-06-30 20:36:37

标签: php stream

我搜索了几个小时,我无法弄清楚PHP中的“流上下文”是什么。我正在尝试使用API​​,它涉及使用这个“流上下文”。

文档说:

  

上下文是一组参数和特定于包装器的选项,用于修改或增强流的行为。

  1. 什么参数?
  2. 选项是'特定于包装器'是什么意思?
  3. 什么流?
  4. 这是我正在谈论的代码:

    // 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);
    

3 个答案:

答案 0 :(得分:7)

  1. 修改流属性的上下文参数。

  2. 选项特定于流使用的任何包装器。这些示例包括文件,所有不同的php:// URI,HTTP包装器(如执行file_get_contents('http://example.com')时 - 它与file_get_contents('some-file.txt')不同)

  3. 任何流!

  4. 在这种情况下,流上下文将传递给file_get_contents,告诉它将该授权标头和那些选项发送到包装器,允许file_get_contents从HTTP URL获取内容。

    您可以找到HTTP上下文选项列表on the PHP website

答案 1 :(得分:7)

我花了一些时间来理解PHP的流上下文选项和包装器。我写了一篇文章,讲述了什么帮助我最终围绕how to understand PHP stream contexts options and wrappers。我希望它有所帮助。

  

要正确处理下线(流数据),您需要适当的代码来处理传递的不同类型的项目(数据类型)。处理每种不同类型数据类型的工具是“参数”。

     

“上下文”取决于传递的内容(流式传输)。因此,对于“流式传输”(传递)“参数”(处理所需工具)的不同“上下文”(项目种类),“数据类型”(项目类型)将发生变化。

     

术语上下文简单地提到了这样一个事实:对于不同的数据类型,情况是唯一的,具有自己的必需参数。

     

PHP流包装器需要一个上下文才能知道处理数据类型需要哪些参数。

答案 2 :(得分:1)

  1. http,request_fulluri,ignore_errors,header都是参数。 它们改变了函数的方式(在这种情况下为file_get_contents)。

  2. 特定于包装器的选项类似于“http” - 你不会在文件系统文件流上使用它,因为它不适用。

  3. 流是数据本身的传输,当file_get_contents打开连接,传输所有内容等时发生...