@awikong

Как обновлять динамичные данные полученные через UDP?

Добрый вечер. Учу PHP MySQL, только только начал можно сказать.
Для опыта решил разрабатывать мониторинг серверов. Нужно же где то тренироваться.

Суть:
На странице отображается 20 серверов.
Когда пользователь заходит на сайт, информация о 20 серверах одновременно поступает через UDP напрямую, без кеширования и тд. Обновит страницу опять свежие данные. Из-за этого страница очень долго грузиться, особенно если сервер находится где не будь в США.

Я пришел к выводу что нужно как то сохранять данные в БД. Скажем каждую минуту. А на странице полной информации сервера можно и прямым запросом отображать инфу, т.к. один сервер загрузить будет быстрее.

Вот часть массива которую я получаю:

Array
(
    [Protocol] => 17
    [HostName] => Panda-Community.com #16 | 2Fort
    [Map] => ctf_2fort
    [ModDir] => tf
    [ModDesc] => Panda-2Fort
    [Players] => 24
    [MaxPlayers] => 24
    [Bots] => 0
    [Dedicated] => d
    [Os] => l
    [Password] => 
    [Secure] => 1
    [Version] => 4516743
    [ExtraDataFlags] => 177
    [GamePort] => 27165
    [SteamID] => 85568392920041083
    [GameTags] => respawntimes,alltalk,2fort,anime,best,best ping,brony,community,ctf,ctf_2fort,eu,fastdl,gametracker,panda,panda community,panda
    [GameID] => 440
)


На общей странице мне достаточно только указывать данные о:

[HostName] => Panda-Community.com #16 | 2Fort
 [Map] => ctf_2fort
 [Players] => 24
 [MaxPlayers] => 24
 [GameID] => 440


Вот именно 5 строк я и собираюсь в БД сохранять и выводить через MySqli на страницу а не через UDP и тд.
Наведите пожалуйста, как мне сделать что бы раз в минуту например у меня для всех серверов в БД обновлялись данные для этих 5 полей.

Куда копать, может есть примеры?

Приношу извинения если я что не технически не грамотно написал. Я просто учусь и пытаюсь решить проблему. Спасибо за внимание.
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kisaa
Поскольку вы понимаете, что пишете велосипед для тренировки, посмотрите на существующую систему мониторинга, например, zabbix. Кратко, ее структура такова: отдельно выполняется сервер мониторинга, который опрашивает хосты с заданной периодичностью, и складывает результаты в БД. И отдельно выполняется веб-морда, которая берет данные из этой БД и отображает их в соответствии с установленными фильтрами.
Ответ написан
saboteur_kiev
@saboteur_kiev
software engineer
1. Отдельный скрипт периодически опрашивает сервера и обновляет данные в базе. Пользователь получает данные только из базы.

2. Можно кешировать запросы.
Например опрашивая состояние конкретного сервера, вы сохраняете в локальную базу данные об этом сервере и время запроса.
При следующем запросе, вы проверяете как давно выполнялся запрос на сервер. Если больше, чем xx минут назад - повторяете запрос на сервер. Если меньше - берете кешированные данные из базы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы