PHP Как я могу открыть несколько источников с помощью curl? - PullRequest
3 голосов
/ 24 августа 2011

У меня есть некоторый код для получения содержимого сайта json, но мне также нужно получить содержимое сайта2.Должен ли я переписать все эти строки снова для site2?Или, может быть, я могу добавить еще один URL в 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);
}

Ответы [ 4 ]

6 голосов
/ 24 августа 2011

Вы можете создать такую ​​функцию, как

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

и позвоните по номеру

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

Возможно, это не оптимальное решение, но оно должно работать для простых случаев

4 голосов
/ 24 августа 2011

Вы можете получить лучшую производительность с помощью multi url curl.См .: http://php.net/manual/en/function.curl-multi-exec.php

И:

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

1 голос
/ 24 августа 2011
<?
$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);
}
?>
1 голос
/ 24 августа 2011

Возможно, вы захотите зациклить на другом сайте:

 $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);
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...