【问题标题】:how to get large data (json) from a specified url in PHP如何从 PHP 中的指定 url 获取大数据(json)
【发布时间】:2017-10-09 07:16:47
【问题描述】:

我有一个 php 应用程序,我需要它从一个 url 获取一个大的 json 响应。使用 curl,当我从终端使用它时,一切都按预期进行。但是 php curl 没有得到整个文件。好像被截断了。

我从终端使用的 curl 命令是:

 curl -v -H 'Accept-Encoding:gzip,deflate,sdch' resultsURL --compressed

resultsURL 是我想从中获取 json 的 url。

这通常给我大约 10,000kb (9-10mb),但从 php curl 我得到最多 400-500kb。

如何获取整个文件?

(执行不是一个选项)

【问题讨论】:

  • 你从浏览器或cli运行php脚本?
  • 我用的是火狐,有区别吗?
  • 好的,如果您从浏览器调用脚本,那么@AZinkey 答案必须对您有所帮助。如果不是秘密,那么下载这个json文件的目的是什么?
  • @maximkou 基本上我不需要下载它。这是一个 api 调用,我只需要获取它在这个 json 中的一些信息。

标签: php json curl


【解决方案1】:
set_time_limit(0);
    $url  = 'http://www.example.com/a-large-file.json';
    $path = '/path/to/a-large-file.json';
    $fp = fopen($path, 'w+');

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FILE, $fp);

    $data = curl_exec($ch);

    curl_close($ch);
    fclose($fp);

【讨论】:

  • 这会输出一个空的 json 文件。当我使用我在 curl 中提供压缩的标题时,它会将我之前得到的内容输出到文件中。
  • 你能分享你的json文件链接吗?
  • 是的,这里是:api.travelpayouts.com/v1/…
  • 上面的 url 给出空结果,是否需要 auth ?
  • 哦,是的,我忘了。如果我没记错的话,它是一次性链接或 ip 绑定的。试试这个。我没用过。 api.travelpayouts.com/v1/…
猜你喜欢
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2014-03-13
  • 1970-01-01
相关资源
最近更新 更多