11 / 5 / 0
Регистрация: 18.11.2012
Сообщений: 114
1

Мониторинг игрового сервера

29.11.2013, 21:06. Показов 2242. Ответов 7
Метки нет (Все метки)

Здравствуйте, друзья. Столкнулся вот с какой проблемой. Хочу сделать мониторинг сервера. Нашел в интернете похожую функцию и немного ее переписал. С горем пополам функция работает, возвращает данные о сервере, тоесть говорит доступен ли он вообще или нет а также количество игроков и количество слотов на сервере через дробь в виде
10 / 100. Функция принимает всего 3 параметра. первый айпи сервера второй порт и третий для меня.

Вопрос вот в чем. Дело в том что функция слишком задумчива. я даже не знаю почему. применяя эту функцию страница может грузится до 10 секунд!!!! а так как у меня сайт - система рейтинга серверов, и пользователи могут добавлять по несколько серверов на один проект то я бось что главная страница будет грузиться вообще минут 10 !!! Помогите как то упростить функцию, или сделать что то что бы данные возвращались или быстрее, или какой то таймаут поставить..

Вот код функции:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function serverstatus($ip,$port,$temp)
  {
    $srvls = array(
    "mnp" => array($ip, $port),
    );
    $playersCount = 0;
    $serv_avaliable;
    
    foreach ($srvls as $srv => $prm)
    {       
        $socket = @fsockopen($prm[0], $prm[1]);       
 
        if ($socket !== false) 
        {           
            @fwrite($socket, "\xFE\x01");               
            $data = @fread($socket, 1024);               
                if ($data !== false && substr($data, 0, 1) == "\xFF") 
                {               
                    $info = explode("\x00", mb_convert_encoding(substr($data,1), "iso-8859-1", "utf-16be"));
                    $playersCount += $info[4];
                    $players=$info[4];
                    $hosts=$info[5];
                }
                else
                {
                
                }
            $serv_avaliable=1;
            
            if($temp==0)
                return 1;
            if($temp==1)
                return $players;
            else
                return $hosts;
        }
        else
        {
            return 0;
        }
    }
  }
Пример работы этой функции уже сейчас на сайте http://mc-rating.ru
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2013, 21:06
Ответы с готовыми решениями:

Выдергиваем данные с игрового сервера
Привет всем, прошу помощи как можно прочитать данные с игрового сервера допустим есть ip адрес и...

Имеется скрипт вывода информации с игрового сервера все корректно работает, но хотелось бы уменьшить таймаут
Здравствуйте, требуется помощь или совет, имеется скрипт вывода информации с игрового сервера, все...

Мониторинг сервера
Подскажите как можно примитивно посмотреть такие данные сервера как: загрузка процессора, его...

Мониторинг сервера Лотус
Народ, может кто знает чем (какой софтиной, если есть конечно) произвести мониторинг сервера Лотус...

7
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
29.11.2013, 21:21 2
OgStyle, используйте node.js в вашем проекте, а не это.
0
11 / 5 / 0
Регистрация: 18.11.2012
Сообщений: 114
29.11.2013, 21:57  [ТС] 3
вы на слово это вставляли ссылку? не совсем понял о чем вы обьясните подробнее пожалуйста

Добавлено через 1 минуту
Прошу прощение я не силен в этом вообще поэтому можете мне помочь! готов даже небольшую денежку скинуть за подробную инструкцию или помощь
0
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
29.11.2013, 22:23 4
если 10 ске грузится я думаю это не от скритпа зависет... а от ответа сервера ( хотя странно... )
сделайте кеш и обнавляйта переодиски ( каждую минуту например ) а пользователю сразу показываейте
0
11 / 5 / 0
Регистрация: 18.11.2012
Сообщений: 114
29.11.2013, 22:48  [ТС] 5
тоесть вы имеете введу что бы функция в куки записывала данные а оттуда брала на сайт?
0
122 / 122 / 27
Регистрация: 22.10.2013
Сообщений: 425
29.11.2013, 23:02 6
чтобы записывать полученные данные в файл/ базу и потом при обращение выдавать этот результат одновременно проверяя давность ифны если больше 100сек к примеру запускать скрипт обновления....
0
11 / 5 / 0
Регистрация: 18.11.2012
Сообщений: 114
30.11.2013, 04:14  [ТС] 7
реализовал с помощью крона. отдельно в бд а уже оттуда беру и переодически обновляю бд.
0
Superposition
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
30.11.2013, 08:33 8
Цитата Сообщение от OgStyle Посмотреть сообщение
вы на слово это вставляли ссылку?
Увы нет, лишь подчеркивание. Под словом "это" я понимаю ржавый велосипед PHP который пытается месить код-фекалии. Посмотрите этот npm для node.js https://npmjs.org/package/net-ping. Зайдите на http://webandphp.com/IntegratingNode.jswithPHP если не хотите напрочь уходить от PHP. Почитайте о технологии WebSocket. Узнайте что такое фреймворк Express для node. Взгляните в окно, мы живем в 21 веке
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2013, 08:33
Помогаю со студенческими работами здесь

Мониторинг сервера (удаленно)
Задача: вывести информацию о сервере (характеристики, состояние, место на жестком диске и тд) ...

Мониторинг сети сервера
Доброго времени суток. Перерыв кучу статей, перепробовав кучу программ) не нашел ничего толкового. ...

Мониторинг принт сервера
Может кто-нибудь подсказать, каким мониторингом пользуется или пользовался на print server на...

Мониторинг сервера win2003
Есть в домене сервер win 2003 ему присвоена одна роль файлового сервера, приблизительно раз в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru