2014-01-25 140 views
1

我有php腳本發送請求到其他服務器。超時和未設置多查詢1查詢

如果彼此相似的問題,我使用多捲曲

try {                 
    $result['response'][] = @new SimpleXMLElement($task);    
    $result['request'][] = @new SimpleXMLElement($request);    

} catch (Exception $e) {            
    // Showing err 
    if ($throwException) {            
     throw new Exception('Internal Server Error', 500);    
    }                 
}                  

如果與答案任何問題我示出一個錯誤。


我想知道:

1)如何理解這是超時錯誤或其他什麼東西?

$cmh = curl_multi_init(); // create only one descriptor 

如果我發送請求5,4會確定,並且通過1將超時()

2)如何取消設置僅在多捲曲這一請求?

謝謝!

回答

0

我建議這個捲曲類:

http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading

$curl = new CURL(); 
$curl->retry = 2; 
$opts = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true ); 
$curl->addSession('http://yahoo.com/', $opts); 
$curl->addSession('http://yahoo.co.uk/', $opts); 
$curl->addSession('http://yahoo.ru/', $opts); 
$result = $curl->exec(); 
$curl->clear(); 
foreach($result as $r) 
{ 
    if($r['info']['http_code'] !== 200) 
     echo $r['url'] . " has failed\n"; 
} 

我可能有一些在foreach有錯的變量。只是print_r($ r ['info']);你會得到每個請求的所有細節。這也對失敗的請求重試($ curl-> retry = 2;)。

+0

我認爲,我需要設置超時小於30秒的描述符? –

+0

更改爲:$ opts = array(CURLOPT_RETURNTRANSFER => true,CURLOPT_FOLLOWLOCATION => true,CURLOPT_TIMEOUT => 30); –

+0

謝謝,但我已經找到,如何解決它。 我們爲每個查詢創建處理程序,然後將它們添加到多處理程序,響應後我們可以通過代碼答案對它們進行過濾。並刪除錯誤的查詢。不過謝謝! –