помогите пожалуйста исправить ошибку при парсинге страниц 404

Пробовал: check_http_status, как я понимаю в переменой $answer должен хранится код страницы, например 404. Но почему когда подаю в $url cтраницу 404 (Для просмотра ссылки Войди или Зарегистрируйся) то в переменной $answer пусто, пробовал сделать вывод и посмотреть значение переменной. Возможно я что то не так сделал.
PHP:
$answer = check_http_status($url);
if ($answer < 400) {
echo "ok";
}
echo "$answer";
PHP:
Надеюсь, в реальном коде там два значка равенства?..
(и кавычки, видимо, присутствуют - иначе код не выполнился бы.. А вот "==" можно и пропустить.)
Да кавычки подправил. Сильного опыта в программировании нету, всегда забываю что в условии надо использовать не присвоение, а сравнение.
 
Спасибо все за советы, использовал get_headers

Таким образом для страниц с ответом не 404, ты сервер дёргаешь 2 раза или в случае 301 редиректа - 4 раза. Т.е. таким решением ты замедлил свой скрипт минимум в два раза.

Рекомендую использовать курл и получать код ответа, как предложил esche.

лучше проверяй что бы http код был меньше 400, будет более универсальное решение
Более универсальное, но ошибочное, потому как могут быть ответы, статус которых меньше 400, но в контексте вопроса ТС являются ошибочными, так как не пригодны для парсинга, хотя это маловероятное развитие ситуации...
 
Более универсальное, но ошибочное, потому как могут быть ответы, статус которых меньше 400, но в контексте вопроса ТС являются ошибочными, так как не пригодны для парсинга, хотя это маловероятное развитие ситуации...

а какие ответы могут не подойти?
если память не изменяет:
двухсотые - все ок
трехсотые - перенаправление
 
а какие ответы могут не подойти?
если память не изменяет:
двухсотые - все ок
трехсотые - перенаправление
102 Processing («идёт обработка»).
105 Name Not Resolved («не удается преобразовать DNS-адрес сервера»).

203 Non-Authoritative Information («информация не авторитетна»)[1][3].
204 No Content («нет содержимого»)[1][3].
(c) Для просмотра ссылки Войди или Зарегистрируйся
 
1. php.net не знает про функцию check_http_status..
2. как уже не раз было сказано, curl решит все проблемы..
3.
PHP:
if( false !== strpos( get_headers( $url ), '404' ) )
 
102 Processing («идёт обработка»).
105 Name Not Resolved («не удается преобразовать DNS-адрес сервера»).
203 Non-Authoritative Information - это аналог 200 из другого источника
204 No Content («нет содержимого»)[1][3].

102 - честный клиент должен сбросить таймер, что бы не было разрыва по таймауту, при парсинге имеет смысл обрабатывать отдельно, либо задать большой таймаут
105 - а в какой ситуации при парсинге будет резолвится имя?
203 - это аналог 200, контент отдается
204 - по моему, при get запросах не возможен
 
1. php.net не знает про функцию check_http_status..
[/PHP]

упс, ошибся, так давно пользуюсь, что забыл что это не штатная
да, для получения http кода используется curl

PHP:
curl_getinfo($ch, CURLINFO_HTTP_CODE);
 
Назад
Сверху