作者: zhyke | 来源:发表于2018-08-30 17:49 被阅读0次

介绍

流作用是使用统一的方式处理文件,网络和数据压缩等共用同一套函数和方法的操作.简单而言,流是具有流式行为的资源对象.因此,流可以线性读写,或许还能使用fseek()函数定位到流中的任何位置.-----PHP手册

流的作用是在出发地和目的地之间传输数据.出发地和目的地可以是文件,命令行进程,网络连接,zip或tar压缩文件,临时内存,标准输入或输出,或者是通过PHP流封装协议实现的任何其他资源----Modern PHP

流封装协议

流式数据的种类各异,每种类型需要独特的协议,以便读写数据.

总体通信流程是:

1.开始通信

2.读取数据

3.写入数据

4.结束通信

每个流都有一个协议和一个目标.指定协议和目标的方法是使用流标识符.格式:<scheme>://<target>

<scheme>是流的封装协议        <target>是流的数据源

案例:

file_get_contents('http://www.baidu.com');

其中http://www.baidu.com就是一个流标识符.http协议会让PHP使用HTTP流封装协议,http之后是流的目标.流的目标之所以看起来像是普通的网页url,是因为HTTP流封装协议就是这样规定的.

file://流封装协议

我们在使用file_get_content(),fopen(),fwrite(),fclose()等读写文件系统.PHP默认使用的file://流封装协议,所以


php://流封装协议

php://stdin----这是个只读PHP流,其中的数据来自标准输入.例如,php脚本可以使用这个流接收命令行传入的脚本信息

php-cli模式下(我这是yaf形式的cli)

php://stdout----这个流的作用是把数据写入当前的输出缓冲区.这个流只能写,无法读或寻址.

同样在cli模式下得到结果是:Hello World!7777888

php://memory----这个php流的作用是从系统内存中读取数据,或者把数据写入系统内存.这个php流的缺点是可用的内存是有限的.使用php://tmp流更安全

cli的结果是   string(7) "7777888"      bool(false)

php://tmp---类似于php://memory,不同的是没有可用的内存的时候,会把数据写入临时文件中

流上下文

有些php流能接受一些参数,这些参数就是流上下文,用于定制流的行为,流上下文使用stream_context_create()创建

流上下文是个关联数组,最外层的如:http,是流封装协议的名称,他的值就是对应的协议

参考

Modern PHP

相关文章

  • 电商的四流体系

    四流:即商品流、信息流、资金流、物流 Ps: 三流:信息流、现金流、物流 四流:信息流、现金流、物流、商品...

  • JAVA API-day07

    A 基本的IO操作 文件流 缓冲流 节点流和处理流 对象流

  • 十五、Stream 流操作

    流的简单使用 流的获取 流的转换 将流做一些处理并返回一个流 抽取子流和连接流 流的转换 2 简单约简 ,终结流的...

  • Java学习——day 17

    主要内容 缓冲流 转换流 字节数组流 数据流 对象流 笔记详情 1. 缓冲流 Java中的流可以分为节点流和处理流...

  • IO流之节点流(文件流)

    IO流的分类 按操作的数据单位:字节流(8bit),字符流(16bit)---->对于文本文件使用字符流处理,对于...

  • Append 流、 Retract 流、 Upsert 流、动态

    Append-only 流: 仅通过 INSERT 操作修改的动态表可以通过输出插入的行转换为流。 Retract...

  • 心流

    心流心流心流

  • IO流 打印流

    一共可以分成3类1:纯字节流2:字符流3:混合流(混合流最好) 混合流 字符流 字节流

  • 流与文件-流

    写在书上 保存下来防止丢失

  • 流系统--事件流

    在流系统中,常常把数据记录叫做事件(event)。实质上是一条包含信息的数据。批处理系统(batch proces...

网友评论

      本文标题:

      本文链接:https://www.haomeiwen.com/subject/qghdwftx.html