You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PHP读取需下载的远程JSON文件并自动获取每日更新?

如何让PHP直接读取触发下载的远程JSON文件

这个问题的核心在于目标链接返回的响应头包含Content-Disposition: attachment,所以浏览器会触发下载,但PHP不受这个响应头限制,只要正确发起HTTP请求就能获取到JSON内容。以下是两种可行的实现方案:

方法1:使用file_get_contents(简单快捷)

如果你的服务器开启了allow_url_fopen(默认大多是开启的),可以用这个方法,同时模拟浏览器请求头避免被服务器拦截:

// 创建请求上下文,添加浏览器UA
$context = stream_context_create([
    'http' => [
        'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36\r\n"
    ]
]);

// 获取远程JSON内容
$jsonContent = file_get_contents('https://prices.csgotrader.app/latest/prices_v6.json', false, $context);

// 解析并处理数据
if ($jsonContent !== false) {
    $data = json_decode($jsonContent, true);
    if ($data !== null) {
        // 这里写你的业务逻辑,比如打印数据片段
        print_r(array_slice($data, 0, 5));
    } else {
        echo 'JSON解析失败: ' . json_last_error_msg();
    }
} else {
    echo '无法获取远程内容,请检查服务器网络或allow_url_fopen设置';
}

方法2:使用cURL(更稳定,推荐生产环境)

cURL不受allow_url_fopen限制,且能更灵活地处理请求,适合复杂场景:

$ch = curl_init();

// 设置请求地址
curl_setopt($ch, CURLOPT_URL, 'https://prices.csgotrader.app/latest/prices_v6.json');
// 要求返回响应内容而非直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 模拟浏览器UA
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
// 可选:如果服务器SSL证书校验失败,临时禁用(不推荐生产环境,建议配置正确证书)
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 执行请求
$jsonContent = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

// 处理响应
if ($httpCode === 200 && $jsonContent !== false) {
    $data = json_decode($jsonContent, true);
    if ($data !== null) {
        // 处理你的数据
        print_r($data);
    } else {
        echo 'JSON解析失败: ' . json_last_error_msg();
    }
} else {
    echo '请求失败,HTTP状态码: ' . $httpCode;
}

额外优化建议

因为目标文件每日更新,没必要每次请求都拉取最新内容,可以添加本地缓存逻辑:

  • 将获取到的JSON内容保存到本地文件(比如local_prices.json)
  • 每次请求前检查本地文件的修改时间,如果超过24小时再重新拉取远程内容,否则直接读取本地文件

内容的提问来源于stack exchange,提问作者Zaiga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:05:26