优化cURL以提高速度

时间:2010-12-06 19:07:11

标签: php curl

我正在制作一个经常进行API调用的Web应用程序。所有API调用都只是简单的GET请求,但我希望尽可能地加快加载时间和输出返回时间。截至目前,我正在使用cURL通过以下方式进行API调用:

<?php
function api_call($params)
  {
  $base = 'https://api.example.com/Api?';
  $url = $base . http_build_query( $params );
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $output = curl_exec($ch);
  return json_decode($output,true);
  }
?>

有没有什么方法可以优化它以加快下载和/或输出时间?

7 个答案:

答案 0 :(得分:8)

是否可以使用IP地址而不是主机名api.example.com?如果是,你可以加速namelookup_delay(在我的情况下几百毫秒)

保持活动对您的情况没有帮助,因为保持活动不会在请求之间建立池连接。它在经典的webbrowser-webserver场景中很有用。

答案 1 :(得分:6)

如果许多API调用之间的数据有时相同,有没有办法可以使用缓存?它更多的是连接速度问题,而不是代码问题。

答案 2 :(得分:4)

不是真的。代码的速度在那里不能真正优化。瓶颈将是您的服务器与其服务器之间的连接。你无法在代码中加快速度。

答案 3 :(得分:2)

您可以做的另一件事是 启用编码,因为它可以传输更少的数据。

curl_setopt($ch, CURLOPT_ENCODING, '');//set gzip, deflate or keep empty for server to detect and set supported encoding.

如果启用编码,则数据将在发送之前进行压缩。 这可能需要一些时间,但如果您处理大数据,则会传输更少的数据。

答案 4 :(得分:0)

优化

<?php
    function api_call($params)
    {
        $url='https://api.example.com/Api?'.http_build_query($params);
        return json_decode(file_get_contents($url),true);
    }
?>

你也可以:

  1. 删除$url变量并将字符串粘贴到file_get_contents()
  2. 如果$params未更改,则您还可以删除http_build_query();并将其结果保存一次到该变量。

答案 5 :(得分:-1)

如果请求是针对同一台服务器,那么您可以做的一件事就是使用keepalive连接。

答案 6 :(得分:-1)

您可以使用多线程来启动脚本的更多副本。它可以更快地执行您的请求

相关问题