2017-08-01 1 views
0

J'essaie d'exécuter plusieurs demandes cURL à partir de l'API Google Analytics et je voulais voir s'il y avait un autre moyen plus efficace d'exécuter les demandes que de les construire manuellement comme ci-dessous. Je devrais éventuellement construire environ 10-15 demandes, cherchant à construire quelque chose de plus utile dans ce cas.Comment faire pour exécuter plusieurs demandes cURL à partir de l'API

<?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); 
?> 

Répondre

1

vous pouvez utiliser 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); 

ou créer la fonction

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

Considérant vous passez dans différents paramètres à chaque fois, vous avez besoin pour faire des appels séparés à la API Cela dit, vous pouvez bénéficier de l'utilisation d'un function() où vous structurez l'appel, et passer le paramètre comme une variable:

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); 
} 

Cela 'enjoliver votre code, vous permettant de passer simplement par un mot appel. Ce qui suit montre comment vous pouvez accéder aux propriétés des informations retournées:

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

Notez que cela représentera toujours la même quantité de données demandées à partir de l'API, fournit bien une façon beaucoup plus propre dans lequel appeler l'API chaque fois que vous en avez besoin.

Espérons que cela aide! :)