PHP流

介绍

流作用是使用统一的方式处理文件,网络和数据压缩等共用同一套函数和方法的操作.简单而言,流是具有流式行为的资源对象.因此,流可以线性读写,或许还能使用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://流封装协议,所以

11005865-57c76495887def47.png


php://流封装协议

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

11005865-da7805ea80b075a3.png

11005865-8bac038408df58fe.png

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

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

 

11005865-fe672f3621875a09.png

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

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

11005865-7a9b18387316716e.png

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

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

流上下文

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

11005865-9839062f48569155.png

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

参考

Modern PHP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值