如何 运行 来自 API 的多个 cURL 请求

How to run mulitple cURL requests from API

我正在尝试 运行 来自 Google Analytics API 的多个 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);
?>

你可以使用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);
}

考虑到您每次传递不同的参数,您需要单独调用 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);
}

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

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。

希望对您有所帮助! :)