2014-02-17 89 views
0

我不知道如何使用curl_multi_exec()來打印HTTP狀態。PHP使用curl_multi_exec(),打印HTTP狀態

首先,我用這個:

function testurl($url) { 
    $ch = curl_init($url); 
    //curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
    curl_exec($ch); 
    $info = curl_getinfo($ch); 
    curl_close($ch); 
    return $info[http_code]; 
} 

這將打印302,200 ... 但是,如果使用此功能10-15網址,但該腳本約15秒。這太長了。

所以我嘗試使用此:

$nodes = array('http://www.google.com', 'http://www.microsoft.com', 'http://www.rustyrazorblade.com'); 
$node_count = count($nodes); 

$curl_arr = array(); 
$master = curl_multi_init(); 

for($i = 0; $i < $node_count; $i++) 
{ 
    $url =$nodes[$i]; 
    $curl_arr[$i] = curl_init($url); 
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true); 

    curl_multi_add_handle($master, $curl_arr[$i]); 
} 

do { 
    curl_multi_exec($master,$running); 
} while($running > 0); 

echo "results: "; 
for($i = 0; $i < $node_count; $i++) 
{ 
    $results = curl_multi_getcontent ($curl_arr[$i] ); 
    echo($i . "\n" . $results . "\n"); 
} 
echo 'done'; 

但我現在不爲什麼,如果鏈接是好還是不工作,這不打印什麼。

如何使用curl_multi_exec()打印,如果鏈接良好HTTP狀態200?

回答

0

這將打印URL的響應代碼。

$nodes = array('http://www.google.com', 'http://www.microsoft.com', 'http://www.rustyrazorblade.com'); 
    $node_count = count($nodes); 

$curl_arr = array(); 
$master = curl_multi_init(); 

for($i = 0; $i < $node_count; $i++) 
{ 
    $url =$nodes[$i]; 
    $curl_arr[$i] = curl_init($url); 
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true); 

    curl_multi_add_handle($master, $curl_arr[$i]); 
} 

do { 
    curl_multi_exec($master,$running); 
} while($running > 0); 

echo "results: "; 
for($i = 0; $i < $node_count; $i++) 
{ 
    $info[$i] = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE);  
} 
print_r($info)