- Баллы
- 76
Искал мониторинг для своего сайта и наткнулся на замечательный мониторинг сделанный на js, в нем проверка онлайна шла на другом сайте, но сайт имел протокол HTTP (Как вы знаете нельзя подключить к сайту работающий на протоколе HTTPS, скрипты и стили с другого сайта который работает на HTTP.) и мне пришлось придумать скрипт который бы проверял онлайн на этом же сайте и работал под протоколом HTTPS.
Ну так приступим.
Создам в корне вашего сайта ну или в другом месте папку с именем "mon" и в ней создаем 4 файла:
В этом варианте все сервера хранятся в масиве, но так же их можно хранить в БД MySQL и код будет выглядеть так: (Комментарии внутри)
Ну а сама таблица выглядит так:
В обоих случаях адрес указывается в формате IP : PORT !
В файл style.css посещаем следующее:
В файл form_online.php посещаем следующее:
В файл form_ofline.php посещаем следующее:
Далее вставляем в нужное место сайта с помощью include в PHP или с помощью iframe в HTML
Думаю все ясно и понятно, появятся вопросы, пишите здесь или в официальную тему на форум CraftM.ru тут.
Ну так приступим.
Создам в корне вашего сайта ну или в другом месте папку с именем "mon" и в ней создаем 4 файла:
- index.php - в котором будет сам скрипт и который нужно будет подключить к сайту.
- style.css - в котором будет лежать стил самого мониторинга.
- form_online.php - в котором будет лежать оформление для включенного сервера.
- form_ofline.php - в котором будет лежать оформление для выключенного сервера.
PHP:
<?php
/* Масив с серверами */
$servers = array(
array('name' => 'HiMagiC', 'address' => 'craftm.ru:25468'),
array('name' => 'HiMagiC', 'address' => 'craftm.ru:25461')
);
/* ------------ */
/* Обработка масива */
foreach ($servers as $server) {
$json = file_get_contents('http://jsonmc.tk/old/?address='.$server[address]); //Импорт информации о сервере.
$dump = json_decode($json); //Де кодировка полученного json в объект масива.
$name = $server[name]; //Кладем в переменную имя сервера.
if (!$dump->{error}) { //Если сервер в сети то выводим следующее..
$user = $dump->{player_online}.'/'.$dump->{player_max}; //Кладем в переменную значение текущего онлайна и максимального кол-во слотов через слейс "0/20".
$record = 'Рекорд: '.$dump->{online_max}.' человек'; //Кладем в переменную рекордное число онлайн.
include 'form_online.php'; //Подключаем оформление для включенного сервера.
} else { //Если сервер не в сети то выводим следующее..
include 'form_ofline.php'; //Подключаем оформление для выключенного сервера.
};
};
/* ------------ */
PHP:
<?php
/* Подключение к БД */
$bdhost = 'localhost'; //Адрес MySQL сервера.
$bdlogin = 'spark'; //Логин к БД mySQL
$bdpass = '37004389'; //Пароль к БД mySQL
$bdname = 'test'; //БД mySQL.
$bdtable = 'server_list'; //Название таблицы с серверами. Это поле можно оставить как есть, оно предназначено для того если вы хотите назвать таблицу в БД по другому.
mysql_connect($bdhost, $bdlogin, $bdpass) or die(mysql_error()); //Соединяемся с mySQL.
mysql_query("SET NAMES 'utf8';"); //Кодировка соединения.
mysql_query("SET CHARACTER SET 'utf8';"); //Кодировка соединения.
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';"); //Кодировка соединения.
mysql_select_db($bdname) or die(mysql_error()); //Соединяемся с БД mySQL.
/* ------------ */
/*Обработка MySQL данных */
$sql = mysql_query("SELECT * FROM $bdtable WHERE 1") or die(mysql_error()); //Вынимаем список серверов из БД и записываем в переменную.
while ($servers = mysql_fetch_array($sql)) { //Записываем масив в переменную.
$servers = array($servers); //Записываем масив в масив и в переменную.
foreach ($servers as $server) {
$json = file_get_contents('http://jsonmc.tk/old/?address='.$server[address]); //Импорт информации о сервере.
$dump = json_decode($json); //Де кодировка полученного json в объект масива.
$name = $server[name]; //Кладем в переменную имя сервера.
if (!$dump->{error}) { //Если сервер в сети то выводим следующее..
$user = $dump->{player_online}.'/'.$dump->{player_max}; //Кладем в переменную значение текущего онлайна и максимального кол-во слотов через слейс "0/20".
$record = 'Рекорд: '.$dump->{online_max}.' человек'; //Кладем в переменную рекордное число онлайн.
include 'form_online.php'; //Подключаем оформление для включенного сервера.
} else { //Если сервер не в сети то выводим следующее..
include 'form_ofline.php'; //Подключаем оформление для выключенного сервера.
};
};
};
/* ------------ */
Код:
CREATE TABLE IF NOT EXISTS `server_list` (
`id` int(11) NOT NULL,
`name` text NOT NULL,
`address` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
В файл style.css посещаем следующее:
Код:
.block {
width: 100%;
height: 30px;
border-width: 2px;
border-style: dashed;
margin-bottom: 6px;
}
.block_left {
float: left;
margin: 6px;
}
.block_right {
float: right;
margin: 6px;
}
.info {display: none;}
.block:hover .info {display: block;}
.block:hover .none {display: none;}
.color_ok {background-color: aliceblue; border-color: rgb(186, 204, 220);}
.color_error {background-color: rgb(225, 107, 107); border-color: rgb(223, 172, 179);}
HTML:
<link rel="stylesheet" href="./style.css" />
<div class="block color_ok">
<div class="none block_left"><?=$name?></div><div class="info block_left"><?=$record?></div>
<div class="none block_right"><?=$user?></div><div class="info block_right"><a href="#">Еще</a></div>
</div>
HTML:
<link rel="stylesheet" href="./style.css" />
<div class="block color_error">
<div class="none block_left"><?=$name?></div><div class="info block_left">Технические работы</div>
<div class="none block_right">Технические работы</div><div class="info block_right"><a href="#">Еще</a></div>
</div>
Далее вставляем в нужное место сайта с помощью include в PHP или с помощью iframe в HTML
Думаю все ясно и понятно, появятся вопросы, пишите здесь или в официальную тему на форум CraftM.ru тут.