如何从API运行多个cURL请求

时间:2017-08-01 03:20:16

标签: php curl google-analytics-api

我正在尝试从Google AnalyticsAPI运行多个cURL请求,并希望了解是否有另一种更有效的方式来运行请求,而不是像下面那样手动构建它们。我需要最终构建大约10-15个请求,以便在这种情况下构建更有用的东西。

<?php

$ch1 = curl_init();
$ch2 = curl_init();
$ch3 = curl_init();

curl_setopt($ch1, CURLOPT_URL, "https://www.googleapis.com/analytics/v3/data/parameters_go_here");
curl_setopt($ch2, CURLOPT_URL, "https://www.googleapis.com/analytics/v3/data/parameters_go_here");
curl_setopt($ch3, CURLOPT_URL, "https://www.googleapis.com/analytics/v3/data/parameters_go_here");

curl_exec($ch1);
curl_exec($ch2);
curl_exec($ch3);
?>

2 个答案:

答案 0 :(得分:1)

您可以使用multi-curl

$urls = array($url1, $url2, $url3);

$curl_arr = array();
$inits = curl_multi_init();

for($i = 0; $i < count($urls); $i++)
{
    $url =$urls[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($inits, $curl_arr[$i]);
}

do {
    curl_multi_exec($inits, $running);
} while($running > 0);


for($i = 0; $i < count($urls); $i++)
{
    $results[] = curl_multi_getcontent($curl_arr[$i]);
}
print_r($results);

或创建功能

function doCurl($url){
  $ch = curl_init();
  curl_setopt($ch1, CURLOPT_URL, $url);
  curl_exec($ch);
}

答案 1 :(得分:0)

考虑到每次都传递不同的参数,您需要需要来单独调用API。话虽如此,您可以使用function()来构建调用,并将参数作为变量传递:

function getData($param = "") {
  $core_url = "https://www.googleapis.com/analytics/v3/data/";
  $target_url = $core_url . $param;

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $target_url);
  $result = curl_exec($ch);
  curl_close($ch);

  return json_decode($result);
}

这将“美化”您的代码,允许您简单地通过一个单词调用。以下显示了如何访问返回信息的属性:

getData('stats')->item; /* Calls https://www.googleapis.com/analytics/v3/data/stats */
getData('info')->item; /* Calls https://www.googleapis.com/analytics/v3/data/info */

请注意,这仍然会导致从API请求相同数量的数据,但每次需要时都会提供更清晰的方式来调用API。

希望这有帮助! :)