Какие есть быстрые и надежные способы на PHP проверить сайт на доступность?

Требуется по url проверить сайт, доступен ли он сейчас или нет.
Сейчас использую такой скрипт:
function accessSite($url) {
  if (preg_match('/[^0-9a-z-_A-Z:\.]/is', $url)!=0) {
    include("modules/idna_convert.class.php");
    $IDN=new idna_convert(array('idn_version' => '2008'));
    $url=$IDN->encode($url);
  }
  @$status=get_headers($url);
  if ($status) {
    if (in_array("HTTP/1.1 200 OK", $status) || in_array("HTTP/1.0 200 OK", $status)) return true;
  }
  return false;
}

Но иногда бывает что очень долго проверяет доступность и несколько раз скрипт давал неверный результат.

p.s. idna_convert.class.php - перекодировка русскоязычных доменов.
  • Вопрос задан
  • 3111 просмотров
Решения вопроса 1
akubintsev
@akubintsev
Опытный backend разработчик
Надо определиться с критериями доступности:
1) превышение таймаута соедиинения;
2) получение какого-то ожидаемого ответа по http.

Запрос можно сделать через curl и задать в нем таймаут.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@cmx
Самое простое - получить 200-й заголовок от сайта
Также можно проверить запись в dns через checkdnsrr()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы