Мониторинг игровых серверов своими руками

Большинству из игроков знакомы сайты мониторинга серверов 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 демонстрирует высокую скорость работы при низком потреблении ресурсов.

Поделиться:

  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • В закладки Google
  • Блог Я.ру
  • Мой Мир
  • Print

Прочтите также:


Метки: , ,

 
 
 

Ваш отзыв