Суть следующая - в личном кабинете пользователя есть окно, куда подгружаются сообщения, поступающие с внешнего сервера.
Сейчас это реализовано следующим способом - сообщение приходят через POST-запрос, загружаются в базу, плюс сразу-же создается apcu-кэш сообщений и их количество, для пользователя, которому поступило сообщение. После этого, если пользователь откроет личный кабинет, у него каждых 5 секунд отрабатывает AJAX-скрипт, который проверяет нет ли новых сообщений (отличается ли количество сообщений с переменной в js-скрипте от количества с кэша, которое подгружается через AJAX) и если количество разное, то AJAX подгружает новые сообщения с того-же кэша.
Сейчас все работает, но мне потребовалось помечать прочитанные сообщения, но это невозможно сделать пока они будут грузиться с кэша. Но если их грузить напрямую с БД, то возникает немаленькая такая нагрузка на БД, из-за чего сайт начинает тупить. Что-то мне кажется что мою задачу можно решить более элегантно, но я не представляю как. Прошу совета.
|