3 votes

PHP Comment ouvrir plusieurs sources avec curl ?

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 à nouveau pour le site 2 ? Ou peut-être que je peux ajouter une URL supplémentaire dans le champ curl_setopt ?

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

6voto

swordfish Points 2035

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 le suivre avec

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

Cette solution n'est peut-être pas optimale, mais elle devrait fonctionner pour les cas simples.

4voto

DhruvPathak Points 16181

Vous pouvez obtenir de meilleures performances avec le curl multi url. Voir : http://php.net/manual/en/function.curl-multi-exec.php

Et :

http://www.rustyrazorblade.com/2008/02/curl_multi_exec/

1voto

David Laberge Points 2224

Vous pouvez essayer de passer en revue les différents sites :

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

1voto

Pedro Lobito Points 6794
<?
$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);
}
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X