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

Alexxxx1

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

Возникла такая задача. Есть сайт. Есть несколько десятков удаленных устройств, которые отправляют свои данные на сайт примерно раз в 1 секунду, и получают с сайта. Есть один пользователь, который в интерактивном режиме контролирует эти устройства, с интервалом примерно в 1 секунду считывает их показания и отправляет им команды на исполнение. Количество удаленных устройств непостоянно, некоторые отключаются, некоторые добавляются новые.
Каким образом лучше хранить на сайте данные для обмена? Подходит ли для этого хранение в базе данных?
 
Нет, это нужно для промышленной автоматики. Устройства это модули ввода-вывода. Замеряют температуру, давление и другие величины, и дискретный ввод-вывод.
 
Хранить вообще можно где угодно. Всё зависит от того, насколько тебе эти данные важны, и в каком объёме.
 
А вот хранить историю команд лучше в чём-то типа RabbitMQ.
 
Хранить историю команд пока нет необходимости. Данные пока тоже хранить не планирую. Интересует только возможность интерактивного наблюдения.
Объем данных относительно невелик, каждое устройство присылает пакет около 500 байт в секунду, всего устройств несколько десятков. Нормально, если они все будут обновлять все это в MySql 1 раз в секунду? Или можете есть способ хранить такие данные в глобальных переменных?
 
тогда сразу в сокет отправляй

А поподробнее? Я в вебе начинающий, больше по электронике. Предполагается, что компьютер пользователя и устройства будут находиться за разными NAT. Есть сайт Apache+MySql+PHP. Через него я хочу их связать.
 
Последнее редактирование:
Вот "по электронике" опиши по шагам, как ты себе представляешь процесс "связывания".
 
Объем данных относительно невелик, каждое устройство присылает пакет около 500 байт в секунду, всего устройств несколько десятков. Нормально, если они все будут обновлять все это в MySql 1 раз в секунду?
Нормально будет.
 
А поподробнее?
1. для каждого сенсора: открываешь сокет на удаленном сервере и каждую секунду кидаешь данные.
2. для каждого клиента (browser/javascript): открываешь сокет на удаленном сервере, подписываешся и ждешь данные, по приходу заменяешь на страничке
3. сервер, открываешь сокет, ждешь данные от сенсоров, сразу по приходу уведомляешь клиентов

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