CURL gibt-response-code 200 und 0 für eine gleiche Seite auf verschiedenen Zeit

Bin ich vor ein ungewöhnliches Verhalten von curl. Für eine bestimmte Seite, die ich irgendwann mal bekommen HTTP-Antwort-code 200 und manchmal bekomme ich 0 als HTTP-Antwort-code. Ich bin nicht in der Lage zu verstehen, ob diese Seite gültig ist oder nicht. Wenn Sie versuchen, den angegebenen code, bitte versuchen Sie es für mindestens 5-10 mal so, dass man den Unterschied sehen.

function print_info()
{
    $url = 'bart.no';
    $arr = array(
    'bart.no',
    'bolandirekt.nu',
    'ekompassen.com',
    'ekompassen.nu',
    );

    foreach ($arr as $url)
    {
        echo "<br/>URL: " . $url;
        $temp = str_replace(array("www.", "http://", "https://"), "", strtolower($url));

        //From this array it will be decided which is to prepend
        $pre_array = array("", "www.", "https://", "http://", "https://www.", "http://www.");
        $status_code = array();

        //For each Value Status will be stored
        foreach ($pre_array as $pre)
        {

            $options = array(
                CURLOPT_RETURNTRANSFER => TRUE, //return web page
                CURLOPT_HEADER => TRUE, //don't return headers
                CURLOPT_FOLLOWLOCATION => FALSE, //follow redirects
                CURLOPT_ENCODING => "", //handle all encodings
                CURLOPT_USERAGENT => "spider", //who am i
                CURLOPT_AUTOREFERER => FALSE, //set referer on redirect
                CURLOPT_SSL_VERIFYHOST => FALSE, //ssl verify host
                CURLOPT_SSL_VERIFYPEER => FALSE, //ssl verify peer
                CURLOPT_NOBODY => FALSE,
                CURLOPT_CONNECTTIMEOUT => 20, //timeout on connect
                CURLOPT_TIMEOUT => 20, //timeout on response
            );

            //Initializing Curl
            $ch = curl_init($pre . $temp);
            //Set Curl Options
            curl_setopt_array($ch, $options);
            //Execute Curl
            $content = curl_exec($ch);

            $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            echo "<pre/>";
            if ($code == 200)
            {
                print_r(curl_getinfo($ch));
                break;
            }           
                            curl_close($ch);
        }
    }
}

Also meine endgültige Frage ist : Warum bin ich immer der response-code 200 für die Seiten, die nicht vorhandene Oder öffnen nicht im browser ? Auch, warum manchmal bekomme ich Antwort-code 0 und manchmal response-code 200 für die gleiche Seite auch wenn ich immer Zeit-Intervall zwischen den Anfragen ?

  • 0 ist keine gültige HTTP-status-code - sind Sie wahrscheinlich immer ein timeout (vielleicht wird die Seite langsamer laden, als Sie Ihren 20-Sekunden-timeout?).
  • Sie können auch immer firewalled aufgrund mehrere Anfragen in einer kurzen Zeit
  • Es ist normal, um die verschiedenen status-codes, die zu verschiedenen Zeiten (verursacht durch die Verbindungsprobleme in den meisten Fällen, die ich angetroffen habe).
  • Dies ist zu vage. Erwähnen Sie bitte, die URL ist nicht in Ihrer Skript (Hinweis: echo $pre . $temp;) und den browser. Bitte beachten Sie den Aufruf curl_error(), wenn curl_exec() zurück false.
  • für die Mehrzahl der URLs, script Auffassung http://www
  • Wenn ich versuche, mit Zeit Intervall, dann auch das gleiche problem Auftritt.
  • Was ist, wenn ich den gleichen code von einem server ? Dann bin ich auch mit dem gleichen Problem.
  • die Ziel-server (was auch immer Sie legen hier curl_init($pre . $temp);) kann Schwierigkeiten haben. Netzwerk unter riesigen laden, der server möglicherweise überlastet...
  • aber mein Punkt ist, wie ich immer bin, 200-response-code für die Seiten, die nicht bestehende !!!
  • was bedeutet es Seite ist nicht vorhanden? Hat die Seite, sagen, dass die angeforderte Seite nicht existiert? Ist es wirklich zurück schicken 4xx Familie-codes? Oder dns-überhaupt nicht existiert?
  • Es existiert überhaupt nicht. Ich bin die Verwaltung Tausende von domains. Und von Ihnen habe ich zu finden, die nicht mehr aktiv sind. Ich kam zu kn0w über das problem, wenn ich nicht die IP-Adresse von solchen Seiten. (offensichtlich, da Sie nicht vorhandene, I wont get IP Adresse..)
  • was ist mit CURLOPT_MAXREDIRS => 0 ?
  • Wenn ich Schreibe oder nicht, ist ohne Bedeutung, wie ich CURLOPT_FOLLOWLOCATION falsch.
  • aber der Kommentar sagt 10 Umleitungen!! jedenfalls konnte Sie aktualisieren die Frage zu stellen eine einzige Frage beschreiben Sie Ihr problem am Ende? weil, es ist ein bisschen schwierig herauszufinden, was das problem ist, nach dieser langen Diskussion!
  • aktualisiert !
  • Offensichtlich ein Netzwerk-Problem. Versuchen Sie es mit scraperwiki.com's Netz, weil es glaubt, um zu sein, zuverlässig, schnell durch viele, die es benutzen. Testen Sie, ob das Skript funktioniert es.
  • lassen Sie uns weiter, diese Diskussion im chat

InformationsquelleAutor nir | 2012-10-08
Schreibe einen Kommentar