Готовый php-скрипт для проверки доступности любого сайта
Добавлено: 09 ноя 2013, 00:13
Приветствую всех.
Мне нужен был скрипт перекрёстной проверки серверов по http. Да, можно использовать сторонние сервисы с оплатой за каждое смс и абон.платой, но хотелось сделать своё.
Несколько дней я вспоминал PHP, и за несколько часов наваял скрипт. Он несложный, но выполняет свою функцию на все 100%. Возможно, в будущем, я его усовершенствую для проверки сразу нескольких хостов. Но пока - и так всё отлично работает.
Работает просто. При нормальной работе - страница должна отдать код 200. Если отдаётся иной код (например, 502, 503, 504) - то смска к Вам прилетит. При повторной запуске скрипт проверит - отправлял ли уже смску. При возобновлении работы сайта - скрипт удаляет информацию о том, что смс отправлял - и снова готов проинформировать Вас.
Параметры укажите в самом скрипте.
Внимание! Чтобы он проверял, установите его в Cron. Например, в ispmanager это можно сделать или в любом cron-планировщике, не забудьте конечно, исправить путь:
Автор скрипта я, по вопросам пишите: me@xd.tj
Администраторы - если желаете, можете прикрепить тему, так как готовые решения для смс-сервиса - это хорошо;)
Мне нужен был скрипт перекрёстной проверки серверов по http. Да, можно использовать сторонние сервисы с оплатой за каждое смс и абон.платой, но хотелось сделать своё.
Несколько дней я вспоминал PHP, и за несколько часов наваял скрипт. Он несложный, но выполняет свою функцию на все 100%. Возможно, в будущем, я его усовершенствую для проверки сразу нескольких хостов. Но пока - и так всё отлично работает.
Работает просто. При нормальной работе - страница должна отдать код 200. Если отдаётся иной код (например, 502, 503, 504) - то смска к Вам прилетит. При повторной запуске скрипт проверит - отправлял ли уже смску. При возобновлении работы сайта - скрипт удаляет информацию о том, что смс отправлял - и снова готов проинформировать Вас.
Параметры укажите в самом скрипте.
Внимание! Чтобы он проверял, установите его в Cron. Например, в ispmanager это можно сделать или в любом cron-планировщике, не забудьте конечно, исправить путь:
- Код: Выделить всё
/usr/bin/php -q /var/www/USER/data/www/DOMAIN/check.php >/dev/null 2>&1
Автор скрипта я, по вопросам пишите: me@xd.tj
- Код: Выделить всё
<?php
// Available checker via Comtube.Com ver.1.0 (build 9112013)
// Author: Vladislav
// E-mail: me@xd.tj
function BuildUrlParamsWithSignature( $params, $password ){
ksort( $params );
$url = '';
if( !is_array($params) ){ return $url; }
foreach( $params as $key => $value ){
$url .= $key . "=" . urlencode($value) . "&";
}
$signature = md5( $url."&password=".urlencode($password) );
$url .= "signature=" . $signature;
return $url;
}
$password="PASSWORD"; // Ваш пароль
$myurl="mysite.ru:8080"; // Адрес сайта, можно с портом, если необходимо
$params = array(
"action" => "send",
"message" => "$myurl is down!",
"number" => "79181234569", // Укажите номер на который будем отправлять
"senderid" => "site-checker", // От кого будем отправлять (укажите тот, который Вам добавлен в Comtube)
"username" => "mylogin", // Ваш Логин
'charset' => 'utf-8',
);
$checkfile="sms.lock";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$myurl");
curl_setopt($ch, CURLOPT_TIMEOUT, "15");
curl_setopt($ch, CURLOPT_USERAGENT, "Available checker via Comtube.Com v.1.0 - me@xd.tj");
curl_setopt($ch, CURLOPT_HEADER, "0" );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, "1");
$check=curl_exec($ch);
$info = curl_getinfo($ch);
$code = $info['http_code'];
curl_close($ch);
if ($code=="200") {
if(file_exists($checkfile)) {
unlink("sms.lock");
exit();
}
else
{
exit();
}
}
else
{
if(file_exists($checkfile)) {
exit();
}
else
{
fopen("$checkfile","w");
$params = BuildUrlParamsWithSignature ($params, $password);
file_get_contents( 'http://api.comtube.ru/scripts/api/sms.php?'.$params );
exit();
}
}
?>
Администраторы - если желаете, можете прикрепить тему, так как готовые решения для смс-сервиса - это хорошо;)