2013-07-10 176 views
0

我正在嘗試創建一個腳本,該腳本將循環遍歷一個數組,該數組將包含使用cURL &'404'錯誤檢測的各種文件名。換句話說,如果最初的默認文件名稱爲'404',那麼我會創建一個循環函數來遍歷數組,同時仍然運行相同的cURL會話。當它檢測到狀態'200'時,它停止循環&然後繼續到客戶端發送的下一個值。我嘗試使用foreach(),但沒有成功。這是我用作開始的代碼。cURL&通過陣列循環

<?php 

if (isset($_POST['request'])) { 
$req = $_POST['request']; 
$url = $addr; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_NOBODY, true); 
curl_exec($ch); 
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') { 
echo $url; 
} 
curl_close($ch);         
} 

?> 

回答

0
if (isset($_POST['request'])) { 
    $req = $_POST['request']; 
    $url = $addr; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER , true); 

    for ($retry = 1; $retry <= $retry_max; $retry++) { 
     $ret= curl_exec($ch); 
     preg_match("/^HTTP\/[01\.]+ ([0-9]{3}[A-Za-z\(\)\- ]+)/",$ret,$getcode); 
     if (strcmp($getcode[1], '200 OK') === 0) { 
      break; 
     } 
     else { 
     sleep(10); 
     } 
    } 
    curl_close($ch);         
}