0

我正在尝试创建一个脚本,该脚本将使用 cURL 和“404”错误检测循环遍历包含各种文件名的数组。所以换句话说,如果初始默认文件名出现为“404”,我将创建一个循环函数来循环遍历数组,同时仍然运行相同的 cURL 会话。当它检测到状态“200”时,它会停止循环,然后继续执行客户端发送的下一个值。我尝试过使用 foreach(),但没有成功。这是我作为开始使用的代码。

<?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);                                
}

?>
4

1 回答 1

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);                                
}
于 2013-07-10T21:07:42.610 回答