博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP对自己I/O流访问的封装(转)
阅读量:6915 次
发布时间:2019-06-27

本文共 1788 字,大约阅读时间需要 5 分钟。

 

  • php://stdin:访问PHP进程相应的输入流,比如用在获取cli执行脚本时的键盘输入。
  • php://stdout:访问PHP进程相应的输出流。
  • php://stderr:访问PHP进程相应的错误输出。
  • php://input:访问请求的原始数据的只读流。
  • php://output:只写的数据流,以 print 和 echo 一样的方式写入到输出区。
  • php://fd:允许直接访问指定的文件描述符。例 php://fd/3 引用了文件描述符 3。
  • php://memory:允许读写临时数据。 把数据储存在内存中。
  • php://temp:同上,会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。
  • php://filter:过滤器。

  注:php://stdin 是只读的, php://stdout 和 php://stderr 是只写的。

  列举几个例子加深理解吧:

  1. php://input

1 //终端输入 curl -d "Hello World" -d "foo=bar&name=John" http://localhost/dev/streams/php_input.php 2 //print_r($_POST)输出。注意丢失了第一个数据包 3  4 Array 5 ( 6     [foo] => bar 7     [name] => John 8 ) 9 10 // php://input输出11 Hello World&foo=bar&name=John

  2. 使用过滤器

1 //在使用 readfile(),file_get_contents(),stream_get_contents()之类的函数使,可以使用过滤器应用在打开的stream上 2  3 // 写入时用 str_rot13() 函数处理所有的流数据 4 file_put_contents("php://filter/write=string.rot13/resource=file:///path/to/somefile.txt","Hello World"); 5  6 //也可以使用下面的方式 7 $h = fopen('test.txt', 'r'); 8 stream_filter_append($h, 'string.rot13'); 9 10 // Read data and encode/decode11 readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.google.com");

  3. 设置上下文(Stream Contexts)  

1 $opts = array( 2   'http'=>array( 3     'method'=>"POST", 4     'header'=> "Auth: SecretAuthTokenrn" . 5                "Content-type: application/x-www-form-urlencodedrn" . 6                "Content-length: " . strlen("Hello World"), 7     'content' => 'Hello World' 8   ) 9 );10 $default = stream_context_get_default($opts);11 readfile('http://localhost/dev/streams/php_input.php',false,$default);12 //我们模拟了一个POST包13 //查看 php_input.php 的 apache_request_headers() 会显示结果14 15 Array16 (17     [Host] => localhost18     [Auth] => SecretAuthToken19     [Content-type] => application/x-www-form-urlencoded20     [Content-length] => 1121 )

 

转载地址:http://ddacl.baihongyu.com/

你可能感兴趣的文章
饭后最该知道N件事
查看>>
MaxCompute Studio 2.8.1 新版本发布啦!
查看>>
《区块链原理、设计与应用》一2.5 认识上的误区
查看>>
当所有编程语言都在靠齐的时候
查看>>
苹果拥抱IBM背后:大数据推动手机行业洗牌
查看>>
无线广播可以毁灭物联网安全:信号干扰器及犯罪
查看>>
《并行计算的编程模型》一3.7.1 选择集合参与者
查看>>
百分点:利用大数据做智慧商业
查看>>
让你的软件永生的7个规则
查看>>
浅析自动化设备安装运维的发展方向
查看>>
2015年Facebook广告变现规模达10亿美金
查看>>
澳大利亚推出网安行业竞争力计划
查看>>
人类与机器人,如何能像朋友一样愉快聊天?
查看>>
2013云计算预测:攻击者馋涎云中数据
查看>>
中国最大漂浮式太阳能电站在安徽淮南落成
查看>>
关系数据库原理、数据模型
查看>>
日媒曝美的考虑收购东芝芯片业务,前者否认
查看>>
Win10杀毒软件大PK:Defender垫底 卡巴/小红伞第一
查看>>
WIFI性价比持续走高 或成物联网首选
查看>>
Linux后门入侵检测工具,附bash漏洞解决方法
查看>>