2011-08-24 4 views
3

J'ai du code pour obtenir le contenu json d'un site1 mais j'ai aussi besoin d'obtenir le contenu d'un site2. Dois-je réécrire toutes ces lignes pour le site2? Ou peut-être que je peux ajouter une URL de plus dans le curl_setopt?PHP Comment puis-je ouvrir plusieurs sources en utilisant curl?

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://site1.com"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$outputJson = curl_exec($ch); 
if ($outputJson === FALSE) { 
    echo 'Sorry, This service is currently unavailable: '. curl_error($ch); 
} 
+0

Une demande par demande. Si vous voulez éviter la duplication de code, pensez à écrire une fonction d'aide. –

+0

Enveloppez votre code dans une fonction qui prend une URL comme argument et renvoie le json –

Répondre

6

Vous pouvez créer une fonction comme

function get_data($url) 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    $outputJson = curl_exec($ch); 
    if ($outputJson === FALSE) { 
     echo 'Sorry, This service is currently unavailable: '. curl_error($ch); 
    } 
    return $outputJson; 
} 

et appelez avec

get_data("http://blah.com"); 
get_data("http://blah1.com"); 

Cela pourrait ne pas être une solution optimale mais le travail shuould pour les cas simples

+2

Vous êtes rapide! –

1

Vous pourriez vouloir essayer de boucle trought le site différent:

$aSites = array("http://site1.com","http://site2.com"); 
for($x=0; $x<count($aSites); $x++){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$aSites[$x]); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    $outputJson = curl_exec($ch); 
    if ($outputJson === FALSE) { 
     echo 'Sorry, This service is currently unavailable: '. curl_error($ch); 
    } 
} 
1
<? 
$url1 = "http://site1.com"; 
$url2 = "http://site2.com"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$outputJson = curl_exec($ch); 
curl_setopt($ch, CURLOPT_URL, $url2); 
$outputJson2 = curl_exec($ch); 
curl_close($ch); 

if ($outputJson === FALSE || $outputJson2 === FALSE) { 
    echo 'Sorry, This service is currently unavailable: '. curl_error($ch); 
} 
?> 
Questions connexes