9

全部,

我必须请求一个返回 JSON 请求的 URL。我正在使用 PHP 和 CURL 来执行此操作。目前,请求和响应大约需要 3-4 秒。

以下是卷曲代码

    $ch = curl_init();
    $devnull = fopen('/tmp/curlcookie.txt', 'w');

    curl_setopt($ch, CURLOPT_STDERR, $devnull);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $desturl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

    $ret = curl_exec($ch);

    curl_close($ch);

    if ($devnull)
    {
        fclose($devnull);
    }

以下是 CURL_GETINFO 数组

Array
(
    [url] => https://xx.xx.xxx.xx/portalsite/tester
    [content_type] => application/json
    [http_code] => 200
    [header_size] => 198
    [request_size] => 835
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 2.054561
    [namelookup_time] => 6.5E-5
    [connect_time] => 0.016048
    [pretransfer_time] => 0.123947
    [size_upload] => 699
    [size_download] => 46735
    [speed_download] => 22746
    [speed_upload] => 340
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 1.743973
    [redirect_time] => 0
)

如何加快 CURL 处理时间?

谢谢

4

3 回答 3

6

根据这个答案(类似的问题),如果您在 Mac OS X 上并且您使用xxxx.local127.0.0.1 myproject.local在您的/etc/hosts/

正如@lepix 所说:

这是因为 .local tld 是为 Bonjour 服务保留的,这是从 Mac OS X Lion (10.7) 开始的。

希望它会有所帮助,感谢lepix。

于 2014-09-18T12:15:11.200 回答
4

看起来大部分时间都在等待服务器响应(starttransfer_time - pretransfer_time = 1.620026)......也许服务器正在执行一些数据库或其他需要时间的操作?

于 2009-12-29T20:47:36.160 回答
4

我遇到了这样的问题,使用 wget 它很快(最多 1 秒),使用 cURL 大约需要 5 秒才能获取页面,当 tcpdump-ing 时我发现 cURL 尝试进行反向 DNS 查找,如果服务器没有注册反向 DNS,它会减慢您的速度,我在本地 DNS 服务器上设置了反向 DNS,因此现在使用 cURL 对该站点的每个请求都非常快。我没有找到从 cURL 设置禁用反向 DNS 查找的方法。

我的建议是扫描您的流量,看看它在哪里等待了这么久。

于 2010-01-15T15:17:56.283 回答