首页 > 解决方案 > 慢 CURL 请求 PHP

问题描述

我对我公司在 google appengine 上的 API 的 POST 请求有问题,而发出请求的脚本在另一个非 Google 服务器上。

我向 API 发出两个连续请求,第一个(POST)用于获取访问令牌,而第二个(GET)用于检索我需要的实际数据。

代码如下:

switch ($method){
    case "POST":
        curl_setopt($curl, CURLOPT_POST, 1);
        if ($data)
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        break;
    case "PUT":
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
        if ($data)
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                              
        break;
    default:
        if ($data)
            $url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
        
if(!is_null($headers)){
    curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);
}
 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// EXECUTE:

$result = curl_exec($curl);
        
curl_close($curl);

return $result;

请求时间变化很大,从不到 1 秒到超过 255 秒。

查看 curl_getinfo 输出,我发现困难的部分是connect_time,它主要在第二个请求(即 GET 请求)中变得很长(更频繁)。

我为 cURL 选项尝试了许多参数,例如强制 IPV6 或 IPV4 没有任何改变,也许它会好转 20 次,然后问题再次发生。

提前感谢您的帮助,如果需要,请向我询问其他详细信息。

标签: phpgoogle-app-enginecurlpostrequest

解决方案


推荐阅读