2014-04-03 45 views
0

我有一個函數,它使用curl代理列表來擦除數據。它每次調用該函數時都會選擇一個隨機代理。但是有時代理可能會失敗或超時。當找不到字符串時重試函數

當連接失敗/超時時,我想重複該功能最多3次,直到數據返回。

我想測試是否接觸不良的方式是通過檢查輸出這樣存在的字符串:

$check = stripos($page,'string_to_check'); 
if($check > 0){ 
    return $page; //String found. Return scraped data. 
} 
else { 
    //String not found. Loop the script 
} 

我怎麼會得到整個功能代碼重複,如果該字符串沒有按不存在?

+0

轉入遞歸函數 –

+1

'$ i = 3; while($ i--){...}' – zerkms

+0

你能詳細說明一下嗎? – netdon

回答

0
$max_tries = 3; 
$success = false; 

//try 3 times 
for($i = 0; $i < $max_tries; $i++) { 
    $page = your_scrape_function(); 
    $check = stripos($page,'string_to_check'); 
    if($check > 0){ 
    $success = true; 
    break; //String found. Break loop. 
    } 
} 

// double check that the string was actually found and you didn't just exceed $max_tries 
if(! $success) { 
    die('Error: String not found or scrape unsuccessful.'); 
} 
+0

與此問題是該函數似乎選擇每個重試相同的死代理。 – netdon

相關問題