Автор: Khilinski 2024-09-28

Проверка сайта с помощью PHP и Telegram

Давай подробно разберем, что нужно сделать.
Для начала, можно включить отображение ошибок, что бы проще было отслеживать все нащи действия


ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
        

Напишим функцию проверки доступности сайта


function checkSiteAvailability($url) {
    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    curl_exec($ch);

    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);

    return $http_code == 200;
}



Эта функция отвечает за проверку доступности сайта с помощью cURL:

  • Инициализация cURL с помощью curl_init($url) — создается запрос на указанный URL.
  • curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); — возвращает результат выполнения вместо вывода его на экран.
  • curl_setopt($ch, CURLOPT_HEADER, true); и curl_setopt($ch, CURLOPT_NOBODY, true); — отключают передачу тела ответа, оставляя только заголовки.
  • curl_setopt($ch, CURLOPT_TIMEOUT, 10); — устанавливает таймаут на 10 секунд для завершения запроса.
  • curl_exec($ch); — выполняет запрос.
  • curl_getinfo($ch, CURLINFO_HTTP_CODE); — получает HTTP-код ответа (например, 200 для успешного запроса).
  • curl_close($ch); — закрывает соединение.
  • Возвращается true, если сайт доступен (код 200), иначе false.

Функция отправки уведомлений в Telegram


function sendTelegramNotification($botToken, $chatId, $message) {
    $url = "https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatId&text=".urlencode($message);
    file_get_contents($url);
}


Основная логика


if (!checkSiteAvailability($url)) {
    $message = "Сайт $url недоступен! $http_code";
    sendTelegramNotification($botToken, $chatId, $message);
    echo $message;
} else {
    echo "Сайт $url доступен.";
}



Таким образом, этот код проверяет доступность сайта и уведомляет вас в Telegram, если сайт не работает.

Весь код находится в github а сам видео - урок на моем канале, кликай чтобы перейти.