Мониторинг и информирование изменений в БД на веб сервере?
Имеется динамическая web страница в виде большой таблицы с input полями и кнопкой Сохранить.
Доступ многопользовательский.
Как организовать немедленную передачу в браузер каждого пользователя информацию об изменении. Пусть маркером, пусть JSON данными, но чтобы у всех в браузере была всегда актуальная информация.
Один пользователь изменил колонку - у всех оно обновилась.
Если совсем мгновенную - сокеты.
Цепляемся клиентом к сокету.
При изменении данных на сервере, отправляем в сокет описание что где изменилось, рендерим страницу
Простите, что вклиниваюсь, но как раз вопрос по теме: а каким образом предлагается мониторить изменение данных в БД? Сокеты как раз у меня уже есть в проекте, есть связь... но т.к. сокет работает в бесконечном смысле, то возникает проблема, я запускаю сокет из консоли (серверную сторону), и никак не могу из кода на стороне сервера, через него писать - при попытке импорта кода сокета происходит естественно бесконечное ожидание. Что делать?
@Skerrigan лучше это отдельными вопросами задавать.
Идея в том, что у Вас на сервере есть некий постоянно работающий демон к которому цепляются по сокетам клиенты и ждут обновлений.
Уведомить этот демон можно разными способами.
1) Можно открывать к нему сокет и писать туда (соответственно надо научить демон получать данные из сокета + подумать о защите что бы пользователи туда всякого лишнего не кидали)
2) Можно вместо этого использовать любое решение для очередей: rabbitmq, redis, итд
rabbitmq более мощная штука для очередей чем redis, там можно настраивать разделение одной очереди на несколько, дублирование и проч.
redis проще, его не нужно настраивать :)
Мы делали и так и так в зависимости от задачи:
В первом случае у нас так работал достаточно нагруженный чат.
Во втором случае демон на node.js while(true) получает данные из очереди.
php скрипты когда что то меняется кладут событие в очередь.
все :)
@DmitriyEntelis спасибо за развернутый ответ. Согласен, что лучше отдельными, но очень трудно найти кого-то, кто не только умеет работать с сокетами, но и не пройдет мимо... ответит ^_^