PHP. Скрипт проверки сайтов на работоспособность

Если вы владелец огромного количества сайтов, которые приносят доход, то вам необходимо быть уверенным в работоспособности каждого сайта в определенный момент времени. Я написал скрипт, который проверяет работоспособность сайта и отсылает email в случае, если какой-либо из сайтов не работает. Скрипт нужно поставить на крон.

Файл index.php:

    header('Content-Type: text/html; charset=utf-8');
ini_set("max_execution_time", 0);

include('Phpmailer.php');
include('config.php');

$sites = 'sites.txt';
if( !file_exists($sites) )
{
$error = "Error! File {$sites} was not found. Please create it in following directory ".dirname(__FILE__);
send_mail($error, 'Site check: error');
die($error);
}

if( empty($config['email_to']) )
{
die('Error!! The recipient is not found. Please open config.php and specify email of recipient(s).');
}

$list = file($sites);
if( !empty($list) && is_array($list) )
{
$body = array();
foreach( $list as $site )
{
$site = trim($site);
$site = str_replace('http://', '', $site);
$site = trim($site, '/');
$site = 'http://'.$site.'/';
$headers = @get_headers($site);

if( empty($headers) || ( isset($headers[0]) && ( strpos($headers[0], '200') === false && strpos($headers[0], '301') === false ) ) )
{
$body = $site.'FAIL'.date('m/d/Y H:i');
send_mail($body);
echo $body;
}
}
}
else
{
$error = "Error!! Could not get list of domains from {sites}. Please check it out.";
send_mail($error, 'Site check: error');
die($error);
}

function send_mail($body, $subject = 'Site check')
{
global $config;
$phpmailer = new PHPMailer();
$phpmailer->From = $config['email_from'];
$phpmailer->FromName = $config['email_from_name'];
$phpmailer->CharSet = $config['email_charset'];
$phpmailer->IsHTML(true);
$phpmailer->Subject = $subject.' - '.date('/m/d/Y H:i');
$phpmailer->Body = $body;

if( is_array($config['email_to']) && sizeof($config['email_to']) > 0 )
{
foreach( $config['email_to'] as $email_to )
{
$phpmailer->AddAddress($email_to);
}
}
else
{
$phpmailer->AddAddress($config['email_to']);
}

$send = $phpmailer->Send();
$phpmailer->ClearAddresses();
}

Для работы скрипта нужна библиотека phpmailer, конфиг и список адресов сайтов в текстовом документе - каждый сайт с новой строки.

Конфигурационный файл config.php:

$config['email_from'] = 'no-reply@gmail.com';
$config['email_from_name'] = 'no-reply';
$config['email_charset'] = 'utf-8';

$config['email_to'][] = 'email_1@gmail.com';
$config['email_to'][] = 'email_2@gmail.com';
$config['email_to'][] = 'email_3@gmail.com';

Список сайтов sites.txt:

google.com
runaperuna.ru
tvoy-vibor.com.ua
jquery23.com

Скрипт читает каждую строку из файла sites.txt, делает запрос на адрес и получает заголовки. В зависимости от них скрипт принимает решение.

Интересное

Git и Bitbucket
Git – это распределенная система контроля версий. Пожалуй, на этом теория заканчивается, так как...
Отзыв о FirstVDS
При покупке хостинга у FirstVDS мне предложили скидку за годный отзыв в блоге или на форуме....
Project Glass — Очки будущего от Google
Компания Google представила суперсовременные «очки дополненной реальности» или Project Glass. Впрочем,...
Проверка сайта на вирусы
Если пользоваться привычной терминологией, то web вирусы не являются вирусами в традиционном...

Комментарии

    Чтобы оставлять комментарии, авторизируйтесь

    Войти через OpenID

    рейтинг2+-
    Популярные
    Точки входа
    Наверх