<?php
// Connexion à la base de données
$db = new PDO('mysql:host=localhost;dbname=monitoring', 'username', 'password');
// Récupération des URL à surveiller depuis la base de données
$query = "SELECT url FROM monitored_urls";
$stmt = $db->prepare($query);
$stmt->execute();
$urls = $stmt->fetchAll(PDO::FETCH_COLUMN);
// Boucle de surveillance des URL
foreach ($urls as $url) {
$down = false;
// Vérifie si l'URL est disponible pour 1 min
for ($i=0; $i < 12; $i++) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
curl_exec($ch);
$response = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($response != 200) {
$down = true;
} else {
$down = false;
break;
}
sleep(5);
}
// Si l'URL n'est pas disponible pendant 1 min, envoie un courriel
if ($down) {
$to = "
em***@ex*****.com
";
$subject = "URL non disponible";
$message = "L'URL $url n'est pas disponible depuis 1 min.";
$headers = "From:
mo********@ex*****.com
";
mail($to, $subject, $message, $headers);
}
}
?>
Il est important de noter que l’exemple ci-dessus vérifie l’URL toutes les 5 secondes pendant une minute (12 x 5s = 60s). Vous pouvez ajuster cette valeur en fonction de vos besoins.