Ниже я написал простой PHP-скрипт, который делает то, что вы просите. Он пингует сервер, записывает результат в текстовый файл («вверх» или «вниз») и отправляет электронное письмо в зависимости от того, был ли предыдущий результат увеличен или уменьшен.
Чтобы запускать его каждые пять минут, вам нужно настроить задание cron для вызова скрипта PHP каждые пять минут. (Многие общие веб-хосты позволяют вам создавать задания cron; обратитесь к документации вашего хостинг-провайдера, чтобы узнать, как это сделать.)
<?php
//Config information
$email = "your@emailaddress.com";
$server = "google.com"; //the address to test, without the "http://"
$port = "80";
//Create a text file to store the result of the ping for comparison
$db = "pingdata.txt";
if (file_exists($db)):
$previous_status = file_get_contents($db, true);
else:
file_put_contents($db, "up");
$previous_status = "up";
endif;
//Ping the server and check if it's up
$current_status = ping($server, $port, 10);
//If it's down, log it and/or email the owner
if ($current_status == "down"):
echo "Server is down! ";
file_put_contents($db, "down");
if ($previous_status == "down"):
mail($email, "Server is down", "Your server is down.");
echo "Email sent.";
endif;
else:
echo "Server is up! ";
file_put_contents($db, "up");
if ($previous_status == "down"):
mail($email, "Server is up", "Your server is back up.");
echo "Email sent.";
endif;
endif;
function ping($host, $port, $timeout)
{
$tB = microtime(true);
$fP = fSockOpen($host, $port, $errno, $errstr, $timeout);
if (!$fP) { return "down"; }
$tA = microtime(true);
return round((($tA - $tB) * 1000), 0)." ms";
}