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

PHP cURL调用Rubiproject API超时及返回空值问题求助

问题分析与解决方案

你的PHP cURL代码存在两个关键问题,导致了超时和返回为空的现象:

1. 核心冲突:CURLOPT_FILE与CURLOPT_RETURNTRANSFER互斥

当你同时设置CURLOPT_RETURNTRANSFER => true(要求curl_exec()返回响应字符串)和CURLOPT_FILE => $fp(要求将响应写入文件)时,这两个选项会互相覆盖,最终导致$response为空。此外,代码中未初始化$fp变量,也会引发潜在异常。

2. 超时时间设置不合理

原代码中CURLOPT_TIMEOUT => 50(50秒)不足以接收完整的272KB数据,导致超时;调整为500000秒又过于夸张,建议设置为合理的300秒(5分钟)即可。

修正后的完整代码

<?php
// 初始化cURL资源
$curl = curl_init();

// 配置cURL选项
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.rubiproject.com/analytics/v1/report/?account=publisher%2F11990&start=2022-09-01T00%3A00%3A00-08%3A00&end=2022-09-02T23%3A59%3A59-08%3A00&dimensions=date%2Ccountry%2Csite&metrics=ad_requests%2Cauctions_won%2Cpaid_impression%2Crevenue",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 300, // 合理调整超时时间为5分钟
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "authorization: Basic YjA2MzljMzJmYWM0OTA2ssssssssZWNmMjJiZjY0YjljZZWU4NzlkBMGVhMzkxODo0sswwNjk1OTc5YjRlYTaI1NWIyM2Y5NWFlZDE1M2YzODI0Yw==",
        "cache-control: no-cache"
        // GET请求无需content-type头,若Postman中确实存在可保留
    ),
    CURLOPT_FOLLOWLOCATION => true
));

// 执行请求并获取响应
$response = curl_exec($curl);
$err = curl_error($curl);

// 关闭cURL资源
curl_close($curl);

// 处理结果
if ($err) {
    echo "cURL错误: " . $err;
} else {
    print_r($response);
}
?>

额外注意事项

  • 若需要将响应写入文件,需移除CURLOPT_RETURNTRANSFER,并提前初始化文件指针:
    $fp = fopen('report_data.json', 'w');
    // 然后添加CURLOPT_FILE => $fp到选项数组中
    
  • 检查授权头是否正确(代码中已隐去部分字符,请确保实际使用完整有效的Base64编码凭证)。
  • 若仍有问题,可开启cURL的调试模式(添加CURLOPT_VERBOSE => true),查看详细的请求/响应日志,进一步排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:10:20