Скрипт, который проверяет доступность указанных сайтов по коду ответа от сервера (код 200 означает, что все ОК), и отсылает уведомление на электронную почту, если с сайтами что-то не так.
Добавив данный скрипт в планировщик задач, можно постоянно мониторить состояние доступности сайтов.
$url = array( 'http://site1.com/', 'http://site2.com/', 'http://site3.com/', 'http://site4.com/' ); foreach ($url as $val) { $answer = check_http_status($val); if ($answer == 200) echo 'Site '.$val.' is avaliable.', PHP_EOL; else { if ($answer == 28) // See code status - http://curl.haxx.se/libcurl/c/libcurl-errors.html { echo 'Resource '.$val.' is not responding. Time out operation (more than 10 sec)'. PHP_EOL; // Sending notification $from = "test@test.com"; $to = "admin@test.com"; $subject = "Resource is not available"; $message = "Resource $val is not available.\r\nHTTP status: $answer"; mail($to, $subject, $message,"Content-type:text/plain; charset = UTF-8\r\nFrom:$from"); } else { echo 'Resource '.$val.' is not avaliable. Reason: '.$answer.'. ', PHP_EOL; // Sending notification $from = "test@test.com"; $to = "admin@test.com"; $subject = "Resourceis not available"; $message = "Resource $val is not available.\r\nHTTP status: $answer"; mail($to, $subject, $message,"Content-type:text/plain; charset = UTF-8\r\nFrom:$from"); } } } function check_http_status($url) { $user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_VERBOSE, false); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $page = curl_exec($ch); $error = curl_errno($ch); if (!empty($error)) return $error; return ($httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE)); curl_close($ch); } |