Я столкнулся с одним необычным поведением завитка. Для данной страницы я иногда получаю код ответа HTTP как 200, а иногда я получаю 0 в качестве кода ответа HTTP. Я не могу понять, действительна ли эта страница или нет. Если вы попробуете данный код, попробуйте его не менее 5-10 раз, чтобы вы могли видеть разницу.
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); } } }
Поэтому мое последнее сомнение: почему я получаю код ответа 200 для страниц, которые не существуют или не открывается в браузере? Кроме того, почему иногда я получаю код ответа 0 и иногда код ответа 200 для одной и той же страницы, даже если я сохраняю временной интервал между запросами?
Запрос CURL не завершился, поэтому код ответа отсутствует. Причиной этого может быть недопустимое имя хоста (не может быть разрешено), неверный URL, тайм-аут и т. Д.
Вы должны получить код ошибки CURL, как в комментариях CodeCaster и curl_error / curl_errno.
После того, как запрос CURL будет выполнен правильно, тогда код ответа (с сервера) должен быть доступен и значимым.