Хранение общих буферных данных на сайте для нескольких пользователей

Alexxxx1

Новичок
Привет.

Возникла такая задача. Есть сайт. Есть несколько десятков удаленных устройств, которые отправляют свои данные на сайт примерно раз в 1 секунду, и получают с сайта. Есть один пользователь, который в интерактивном режиме контролирует эти устройства, с интервалом примерно в 1 секунду считывает их показания и отправляет им команды на исполнение. Количество удаленных устройств непостоянно, некоторые отключаются, некоторые добавляются новые.
Каким образом лучше хранить на сайте данные для обмена? Подходит ли для этого хранение в базе данных?
 

Alexxxx1

Новичок
Нет, это нужно для промышленной автоматики. Устройства это модули ввода-вывода. Замеряют температуру, давление и другие величины, и дискретный ввод-вывод.
 

AnrDaemon

Продвинутый новичок
Хранить вообще можно где угодно. Всё зависит от того, насколько тебе эти данные важны, и в каком объёме.
 

AnrDaemon

Продвинутый новичок
А вот хранить историю команд лучше в чём-то типа RabbitMQ.
 

Alexxxx1

Новичок
Хранить историю команд пока нет необходимости. Данные пока тоже хранить не планирую. Интересует только возможность интерактивного наблюдения.
Объем данных относительно невелик, каждое устройство присылает пакет около 500 байт в секунду, всего устройств несколько десятков. Нормально, если они все будут обновлять все это в MySql 1 раз в секунду? Или можете есть способ хранить такие данные в глобальных переменных?
 

Alexxxx1

Новичок
тогда сразу в сокет отправляй
А поподробнее? Я в вебе начинающий, больше по электронике. Предполагается, что компьютер пользователя и устройства будут находиться за разными NAT. Есть сайт Apache+MySql+PHP. Через него я хочу их связать.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Вот "по электронике" опиши по шагам, как ты себе представляешь процесс "связывания".
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Объем данных относительно невелик, каждое устройство присылает пакет около 500 байт в секунду, всего устройств несколько десятков. Нормально, если они все будут обновлять все это в MySql 1 раз в секунду?
Нормально будет.
 

WMix

герр M:)ller
Партнер клуба
А поподробнее?
1. для каждого сенсора: открываешь сокет на удаленном сервере и каждую секунду кидаешь данные.
2. для каждого клиента (browser/javascript): открываешь сокет на удаленном сервере, подписываешся и ждешь данные, по приходу заменяешь на страничке
3. сервер, открываешь сокет, ждешь данные от сенсоров, сразу по приходу уведомляешь клиентов

в общем чат на сокетах. к примеру https://socket.io/get-started/chat
 

AmdY

Пью пиво
Команда форума
Хранить историю команд пока нет необходимости. Данные пока тоже хранить не планирую. Интересует только возможность интерактивного наблюдения.
Объем данных относительно невелик, каждое устройство присылает пакет около 500 байт в секунду, всего устройств несколько десятков. Нормально, если они все будут обновлять все это в MySql 1 раз в секунду? Или можете есть способ хранить такие данные в глобальных переменных?
PHP работает по принципу отработал и умер, так что глобальные переменные ты не можешь использовать, т.к. они будут недоступны в рамках других запросов. Надо использовать ибо сторадж для обмена (с такими нагружками подойдёт любой), либо приложение должно работать в режиме демона, для этого можно заюзать https://reactphp.org/
 
Сверху