cURL加载时间太长

时间:2015-11-16 11:09:13

标签: php apache curl

我使用cURL在PHP中调用REST端点来获取一些JSON数据:

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

echo $result;

curl_close($ch);

使用我的localhost上的代码获取数据需要2.5秒。在实时服务器上运行时,相同的代码大约需要7.5秒。当直接在浏览器上打开URL时,只需1.5秒。

我的问题是:为什么cURL需要这么长时间才能在实时服务器上获取数据?如何解决这个问题呢?

以下是服务器上curl_getinfo($ch)的输出:

Array
(
    [content_type] => application/json
    [http_code] => 200
    [header_size] => 420
    [request_size] => 113
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 7.305496
    [namelookup_time] => 0.150378
    [connect_time] => 0.473187
    [pretransfer_time] => 0.473237
    [size_upload] => 0
    [size_download] => 1291504
    [speed_download] => 176785
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => 0
    [starttransfer_time] => 1.787901
    [redirect_time] => 0
    [redirect_url] => 
    [certinfo] => Array
        (
        )

    [primary_port] => 80
    [local_port] => 53962
)

2 个答案:

答案 0 :(得分:0)

$ch = curl_init();
                    curl_setopt($ch, CURLOPT_URL, "set ur url");
                    curl_setopt($ch, CURLOPT_ENCODING , "gzip"); 
                    curl_setopt($ch, CURLOPT_ENCODING, '');    

                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                    $response  = curl_exec($ch);
                    curl_close($ch);

请查看此示例

答案 1 :(得分:0)

尝试使用 ip 地址而不是域名,因为 curl 可能在 dns 查找方面存在问题。