【问题标题】:How to download a page with "Transfer-Encoding:chunked" prior to PHP 5.2如何在 PHP 5.2 之前下载带有“Transfer-Encoding:chunked”的页面
【发布时间】:2011-07-04 13:38:25
【问题描述】:

试图从 XML 语言中检索页面。但是,检索是不可靠的,因为它是分块传输编码。如何正确下载此页面以进行进一步编辑?

我不能使用 PHP 流过滤器,因为我的 PHP 版本只有 5.2。

【问题讨论】:

  • 您如何尝试检索文件?
  • "从 xml 语言中检索页面"?
  • @zneak 我将发布新评论。函数 readfile_chunked ($filename,$type='array'){ $chunk_array=array(); $块大小 = 1*(1024*1024); $缓冲区 = ''; $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { switch($type) { case'array': $lines[] = fgets($handle, $chunksize);休息; case'string': $lines = fread($handle, $chunksize);休息; } } fclose($handle);返回 $ 行; } foreach ( readfile_chunked('api.justin.tv/stream/…) as $key=>$value) {$res .= $value; } file_put_contents('file.xml', $res);
  • @Tomalak Geret'kal 是的,它是带有电视的 xml 文件。
  • @trymerson2010: "带电视的 xml 文件"?!?!?!

标签: php filter stream chunked


【解决方案1】:

我建议使用cURL。它支持 HTTP/1.1,这是可靠接收分块数据所必需的。 file_get_contents之类的PHP核心函数不支持HTTP/1.1do not support chunked data before PHP 5.3.0.

编辑

改写以澄清。谢谢你,@troelskn。

编辑

使用 cURL 的示例:

$rCURL = curl_init();

curl_setopt($rCURL, CURLOPT_URL, 'http://www.example.com/file_to_retrieve.xml');
curl_setopt($rCURL, CURLOPT_HEADER, 0);
curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1);

$aData = curl_exec($rCURL);

curl_close($rCURL);

var_dump($aData);

【讨论】:

  • 5.3 之前不支持 http/1.1 的说法你有参考吗?
  • @troelskn:argl,我应该更清楚一点。我的意思不是说 5.3.0 之前不支持 HTTP/1.1,而是chunked data isn't(见变更日志)。
  • 您可能正在做某事。流包装器protocol_version(或上下文设置)可能配置错误。或者 OPs 服务器不完全兼容并使用 /1.1 回复,即使使用 /1.0 请求的 php 用户代理(并且分块确实是 1.1 的要求,而不是 1.0)
  • 知道如何使用 cURL 或任何其他方法获取此文件吗?
  • @trymerson2010:更新了我的答案。
【解决方案2】:

使用curl 扩展名。

或者对于简单的 GET 请求,只需使用内置的包装器(例如 file_get_contents

【讨论】:

    【解决方案3】:

    使用ext/curl 下载文件。

    【讨论】:

    • 如何正确使用 curl 的命令?因为即使 wget 正在破坏下载文件。
    • 我不推荐使用 curl 命令行而是使用 php 扩展;这就是为什么我添加了指向相应手册部分的链接
    猜你喜欢
    • 2012-05-31
    • 2016-10-27
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多