Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
axle_vega
0 / 0 / 1
Регистрация: 15.01.2014
Сообщений: 25
1

Как получить header недоступного сервера?

15.05.2018, 11:31. Просмотров 727. Ответов 3
Метки нет (Все метки)

Добрый день!

Ситуация следующая: есть список сайтов, который нужно периодически, так сказать, "прозванивать" и проверять на доступность.
Решил получать данные через get_headers(), затем проверять код ответа, и если код не равен 200, 301 или 302, то бить тревогу.

Вот кусочек:

PHP
1
2
3
4
5
6
7
8
9
  $url = 'https://yandex.ru';
  
  $result = get_headers($url);
  
  if (strpos($result[0], '301') || strpos($result[0], '200') || strpos($result[0], '302')) {
    echo 'Всё ок';
  } else {
    echo 'Всё плохо';
  }
Возвращает "Всё ок".

Но если указать несуществующий или недоступный сайт:

PHP
1
2
3
4
5
6
7
8
9
  $url = 'https://y123123andex.ru';
  
  $result = get_headers($url);
  
  if (strpos($result[0], '301') || strpos($result[0], '200') || strpos($result[0], '302')) {
    echo 'Всё ок';
  } else {
    echo 'Всё плохо';
  }
То получаем сначала ошибку:
PHP warning: get_headers(): php_network_getaddresses: getaddrinfo failed: Name or service not known
PHP warning: get_headers(https://y123123andex.ru): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known


и только потом ответ "Всё плохо"

Так вот вопрос у меня, как убрать эту ошибку?
Так-то она не мешает, если ручками скрипт запускать, но вот при запуске по крону - из-за ошибки ничего дальше не работает.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2018, 11:31
Ответы с готовыми решениями:

output_buffering=Off или нерабочий header(). Как быть?
Назрел вопрос функции перенаправления на страничках от одной на другую,которую...

Прием Header от другого сервера
Всем привет! Столкнулся с такой штукой, совершенно новой для меня: Удаленный...

Как в PHP получить текст из буфера обмена сервера?
На локальной машине нужно получить текст из буфера обмена. Вот допустим на...

Как получить текущий урл страницы без сервера и get - параметров?
Например, для страницы...

Как через php получить почту с сервера? +в письмах могут быть прикрепленные файлы
Как через php получить почту с сервера? +в письмах могут быть прикрепленные...

3
Sound84
8 / 8 / 9
Регистрация: 05.03.2018
Сообщений: 49
15.05.2018, 11:58 2
Лучший ответ Сообщение было отмечено axle_vega как решение

Решение

PHP
1
$result = @get_headers($url);
Вот так.

Добавлено через 6 минут
А в идеале.

PHP
1
2
  $fP = @fsockopen($host, 80, $errno, $errstr, 10); 
  if (!$fP) { echo "down"; }else{echo "ok";}
1
axle_vega
0 / 0 / 1
Регистрация: 15.01.2014
Сообщений: 25
15.05.2018, 12:00  [ТС] 3
О, спасибо!

А можно пояснить, чем второй вариант лучше первого?
0
Sound84
8 / 8 / 9
Регистрация: 05.03.2018
Сообщений: 49
15.05.2018, 12:03 4
Более рентабельный, можно даже подсчитать пинг до сервера, и при этом установить тайм-аут соединения.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2018, 12:03

Warning: Cannot modify header information - headers already sent в header('Location: /index.php');
Warning: Cannot modify header information - headers already sent by (output...

Ошибка header: cannot modify header information
Ребят, я так понял что тут header просто перекидывает на другую страницу. Можно...

нужно получить IP сервера
Есть сервер на Windows 8.1 Он работает на lighthttpd нужно получить IP...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru