2017-08-01 35 views
0

我試圖從Google Analytics API運行多個cURL請求,並希望看看是否有另一種更有效的運行請求的方式,而不是像下面那樣手動構建它們。我需要最終構建大約10-15個請求,以便在這種情況下構建更有用的東西。如何運行來自API的多個cURL請求

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

回答

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); 
} 
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更清潔的方式每次你需要。

希望這會有所幫助! :)