Мониторинг игровых серверов своими руками
Большинству из игроков знакомы сайты мониторинга серверов http://www.gametracker.com/ или http://www.gamearmy.ru. Однако есть менее громоздкие и более практичные способы организации локального мониторинга. В этой статье я расскажу о том, как просто и быстро разместить у себя на странице элемент вывода мониторинга игровых серверов.
Для начала необходимо скачать бесплатную php библиотеку GameQ, которая содержит средства для получения сбора данных с серверов более чем 100 различных игр. Установите ее в папку со страницей, на которой будет выведен мониторинг.
Далее в саму страницу вставьте следующий код:
<?php
error_reporting(E_ALL);
//Путь к файлу GameQ.php
require_once 'GameQ.php';
//Список опрашиваемых серверов: имя(произвольное), ip, порт
//Добавьте свои
$servers = array(
'test' => array('killingfloor', '192.168.1.1', 7707)
);
//создание объекта GameQ, добавление в него списка серверов
$gq = new GameQ();
$gq->addServers($servers);
//Дополнительные настройки
$gq->setOption('timeout', 200);
$gq->setFilter('normalise');
$gq->setFilter('sortplayers', 'gq_ping');
//Опрос серверов
$results = $gq->requestData();
function insert_var($results, $s_id, $name, $is_und) {
foreach ($results as $id => $data) {
if($id == $s_id){
print_var($data, $name, $is_und);
return;
}
}
}
//Функция выборки конкретного значения из данных опроса
function print_var($data, $name, $is_und) {
if (!$data['gq_online']) {
printf("?");
return;
}
foreach ($data as $key => $val) {
if (is_array($val)) continue;
if ($key == $name) {
if ($name == 'mapname' && $is_und == 1)
printf(strToLower(str_replace("-","_",$val)));
else
printf($val);
return;
}
}
printf("?");
}
?>
Затем в необходимом месте страницы вызывать функцию
insert_var($results, $s_id, $name, $is_und)
где
-
$results – массив данных опроса, в нашем примере их имена совпадают: $results;
$s_id – имя сервера, указаное в массиве $servers в примере ‘killingfloor’;
$name – имя выводимого параметра, для каждой игры они разные. Список доступных можно получить, добавив свой сервер в такой же массив файла example.php, входящего в состав библиотеки GameQ;
$is_und – ключ, при установке в 1 выводит имя карты в нижнем регистре и заменыет ‘-’ на ‘_’.
Пример вызова функции:
<b>Администратор сервера: <?php insert_var($results, ‘test’, ‘AdminName’, 0); ?></b>
Таким образом, GameQ демонстрирует высокую скорость работы при низком потреблении ресурсов.
Прочтите также:
Метки: killing floor, мониторинг, сервер