Как сделать постоянные запросы?

Допустим, есть сайт с множеством пользователей онлайн. На сайте реализована система уведомлений. В таблице уведомлений у каждой записи есть флаг status (значение 0 обозначает непрочитанное уведомление, значение 1 означает прочитанное). Как сделать постоянную проверку на наличие новых уведомлений, чтобы вывести количество новых уведомлений где-нибудь на сайте?

Задумываюсь о ajax запросах раз в секунду, но думаю с немалым онлайном будет большая нагрузка на сервер.
Пробовал использовать websocket с демоном на php: не смог реализовать отправку уведомлений для конкретного пользователя (сообщение отправляется для всех пользователей онлайн).

Есть ли какие-нибудь способы реализовать такую идею безобидным образом?

Использую PHP на стороне сервера, так что node.js и тп не предлагать.
  • Вопрос задан
  • 2682 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ratchet + websockets + fallback в long pooling (все на базе reactphp сделать и связать с основным приложением через очередь сообщений на rabbitmq/activemq/zeromq/resq/etc либо своими кастылями с базой данных). То что у вас отправлялось всем пользователем это лично ваша проблема - значит вы не разобрались как работать с websockets. У вас соединения должны быть привязаны к пользователям.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Levhav
Возьмусь за разработку проектов любой сложности.
Если не хотите поднимать комет сервер у себя воспользуйтись одним из Saas решений.
Вот несколько comet сервисов.
[Ru] comet-server.ru
[En] https://www.tambur.io
[En] pusher.com
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы