php让服务器不返回chunked
浏览:2240次 出处信息
chunked是http头部一个很特殊的东西,现代浏览器都支持解析Transfer-Encoding:chunked,chunked能更快的让页面呈现出来,因为它能分段下载,浏览器分段解析,对于大页面,这显然提高了可用性,facebook利用这个特性实现了牛逼的big pipe,那实在是将chunked发挥到淋漓尽致的应用了。
nginx好像默认就支持chunked,我还没有找到选项关闭,现在我想要获取一个服务器上到数据,该服务器头部默认包含了chunked,这个特性导致用php处理起来显得有些不爽,而且即使他分段提供,我还是需要把它全部读完才开始处理,虽然php可以很方便的http_chunked_decode,但我这人骨子里就是有点喜欢反人类,让服务器不要返回chunked的数据不就可以了吗?后来。。。。。后来还真让我想到了,chunked是http 1.1才有的东西,所以如果告诉服务器,我只能解析1.0,应该就解决问题了,请看烂代码示例:
<?php $host = 'www.qq.com'; set_time_limit(10); $st=array_sum(explode(' ',microtime())); $ip=gethostbyname($host); $fp=@fsockopen($ip,80,$errno,$errst,5); if( !$fp ){ die('挂了.'); } $header = "GET / HTTP/1.0\r\n"; $header .= "Host: {$host}\r\n"; $header .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1\r\n"; $header .= "Accept: text/html\r\n"; $header .= "Connection: keep-alive\r\n\r\n"; fwrite($fp, $header); $c=fread($fp,1024); var_dump($c); $et=array_sum(explode(' ',microtime())); fclose($fp); var_dump($et-$st); ?>
可以尝试把代码中的1.0改成1.1试试,body部分总是会多出那么几个数字,烦人。这里仅拿QQ做个示例,并非采集之用,给我留言乱猜的同学就此谢过了。
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:最丑陋的PHP命名空间 >>
文章信息
- 作者:gently 来源: Zend Studio
- 标签: chunked
- 发布时间:2011-10-14 13:38:28
近3天十大热文
- [70] Twitter/微博客的学习摘要
- [65] IOS安全–浅谈关于IOS加固的几种方法
- [65] 如何拿下简短的域名
- [64] find命令的一点注意事项
- [63] Go Reflect 性能
- [63] android 开发入门
- [61] 流程管理与用户研究
- [59] 图书馆的世界纪录
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
- [59] Oracle MTS模式下 进程地址与会话信