Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP

Войти
Регистрация
Восстановить пароль
 
axle_vega
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 25
#1

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

15.05.2018, 11:31. Просмотров 78. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как получить header недоступного сервера? (PHP):

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

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

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

Как получить текущий урл страницы без сервера и get - параметров? - PHP
Например, для страницы http://www.localhost:6448/info/catalogue/standart.html?clear_cache=Y получить /info/catalogue/standart.html ...

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

Warning: Cannot modify header information - headers already sent в header('Location: /index.php'); - PHP
Warning: Cannot modify header information - headers already sent by (output started at S:\home\localhost\www\new\cms\login.php:10) in...

3
Sound84
4 / 4 / 3
Регистрация: 05.03.2018
Сообщений: 33
15.05.2018, 11:58 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 / 0
Регистрация: 15.01.2014
Сообщений: 25
15.05.2018, 12:00  [ТС] #3
О, спасибо!

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

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

нужно получить IP сервера - PHP
Есть сервер на Windows 8.1 Он работает на lighthttpd нужно получить IP сервера. при такой записи echo $ _SERVER (’REMOTE_ADDR’); ...

Не срабатывает header, ошибка "Cannot modify header information - headers already sent by" - PHP
Всем привет. Помогите решить проблему. Есть два файла index c формой, через которую загружаем фото и файл с функциями. Нужно, что бы...

Получить курсы валют с сервера центробанка - PHP
До вчерашнего всё работало без проблем. Теперь не хочет. Чо надо ему, а? <?php header("Content-Type: text/html; charset=utf-8"); ...


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

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

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