Aşağıda, sorduğunuz şeyi yapan basit bir PHP betiği yazdım. Bir sunucuya ping atar, sonucu bir metin dosyasına ("yukarı" veya "aşağı") yazar ve önceki sonucun yukarı ya da aşağı olmasına bağlı olarak bir e-posta gönderir.
Her beş dakikada bir çalışmasını sağlamak için, PHP betiğini her beş dakikada bir çağırmak üzere bir cron işi yapılandırmanız gerekir. (Birçok paylaşılan web host cron işleri kurma izni;. Öğrenmek için barındırma sağlayıcınızın belgelerine başvurun)
<?php
//Config information
$email = "[email protected]";
$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";
}
bir cron işi daha iyi ses kullanarak olmaz mı? – ajreal