У меня есть веб-приложение, работающее на PHP через инфраструктуру CakePHP в IIS на компьютере с сервером Windows 2008.
Теперь это приложение опрашивает подключенного пользователя каждые 6 секунд, чтобы обновить часть экрана, и это вызывает тенденцию запросов к серверу IIS и замедляет работу всей системы, когда база данных Oracle занята.
В попытке решить эту проблему, я думаю об использовании Node.js для решения этой проблемы и использовании push-уведомлений. Таким образом, каждые 6 секунд узел будет отправлять уведомления всем активным клиентам браузера.
Проблема, с которой я сталкиваюсь, заключается в том, что мой звонок использует зарегистрированный пользователь сессия. (для вызова БД, и как только я получу данные, чтобы обновить сеанс).
я прочел Redis может быть решением для этого, и я видел посты, объясняющие, как поделиться сессией. Но есть кое-что, чего я еще не понимаю:
Как я могу провести сеанс зарегистрированного пользователя?
Должен ли я перебирать все активные сеансы?
Я хочу создать setInterval
в узле для запроса БД для каждого зарегистрированного пользователя.
Я понимаю, что вы решили, что я реализовал подобную структуру для веб-чата. С помощью redis или memcache вы можете создать свою собственную структуру данных для хранения пользовательского сеанса, она будет загружена в оперативную память, очень быстро и будет работать так, как если бы глобальный сеанс был доступен для всех сеансов пользователей и для любого узла или запроса ajax из браузера, к которому вы получите доступ redis и вернуть ответ обратно пользователю, а не отправлять запрос в базу данных Oracle, а затем обратно пользователю.
Других решений пока нет …