2014-07-01 69 views
1

如果發生超時,重試卷曲請求的更好方法是什麼?重試超時CURL

我一直在使用邪惡GOTO

retry: 

$result = curlPost($ch, "something.php", $cookie, http_build_query($arg)); 

if (curl_errno($ch) == 28) { 
    goto retry; 
} 

// Do something 

curlPost()功能想出了這個解決方案,有

curl_setopt($curl, CURLOPT_TIMEOUT, 3); 
+0

使用循環並試圖反擊 – Phantom

+0

@Phantom我將有一個腳本多個捲曲的要求,爲每個捲曲要求可能有點過分做循環?如果在任何捲曲請求中有超時,我想從頭開始重新開始。 – user1246800

+2

你爲什麼使用'goto'? – silkfire

回答

3

你可以使用一個do-while循環。

$count = 0; 
$max_tries = 5; 
$success = true; 
do { 
    $result = curlPost($ch, "something.php", $cookie, http_build_query($arg)); 
    $count++; 
    if($count >= $max_tries) { 
     $success = false; 
     break; 
    } 
} 
while(curl_errno($ch) == 28); 

if($success == false) { 
    // If it got here it tried 5 times and still didn't get a result. 
    // More code here for what you want to do... 
} 
+1

注意:'$ success = false';是一個無法訪問的聲明 – snowdragon

+0

@snowdragon:重新排序! :-) –

+0

實際上,如果第五次重試成功,也會說失敗。 :-) –