2017-08-01 27 views
0

GoogleアナリティクスAPIから複数のcURLリクエストを実行しようとしていますが、以下のように手動でビルドするよりも効率的なリクエスト実行方法があるかどうかを確認します。私は最終的に約10-15の要求を構築する必要があるので、その場合にはより有用なものを構築しようとしています。複数のcURLリクエストを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); 
?> 

答えて

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

これは、あなたは、単に一つの単語を通過することを可能にする、あなたのコードを「飾り立てる」になりますコール。以下は、あなたが返される情報のプロパティにアクセスする方法を示しています。これはまだかかわらず、APIを呼び出すことでよりクリーンな方法を提供し、APIから要求されて、同じ量のデータをもたらすこと

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

あなたが必要とするたびに。

希望すると便利です。 :)

関連する問題