Как правильно реализовать систему уведомлений?

 
Добрый день!

Мне необходимо реализовать систему уведомлений пользователей в личном кабинете. Например, за неделю до окончания средств на счету, в личном кабинете пользователя (на сайте) должно появляться уведомление об этом. Если он закрыл уведомление, то больше его не показывать. Ну и любые другие события, требующие внимания пользователя дублировать уведомлениями.

Подскажите, есть ли какая-то общепринятая схема реализации таких уведомлений?

Сейчас у меня в голове только такая схема:

Создаем таблицу в базе данных:
  • id записи
  • id пользователя (если 0, значит, для всех пользователей)
  • Текст уведомления
  • Дата, когда уведомление должно появиться
  • Отметка о прочтении
  • Список пользователей, прочитавших общее уведомление (если id пользователя = 0)


И, соответственно, при открытии личного кабинета, делаем выборку по пользователю, непрочитанным и дате раньше или текущей дате. Ну и кешировать результат для конкретного пользователя, например, на 12 часов.

Тут мне не нравится как реализовано уведомление всех пользователей об одном и том же. Если пользователей будет около ста (а, может, и больше), то поле со списком прочитавших будет очень сильно разрастаться…

Поэтому прошу совета, подсказки, направления на путь истинный)))
Илья Уткин
25 января 2013, 06:27
modx.pro
2
1 370
0

Комментарии: 2

Алексей
25 января 2013, 10:32
0
Все правильно, только что бы поле не разрасталось, выводи данные о прочтении во вторую таблицу:
-id записи
-id сообщения
-id пользователя, который прочитал
-дата прочтения

Соответственно выбирать непрочитанные сообщения будешь по 2 таблицам.
    Василий Наумкин
    25 января 2013, 11:25
    0
    Я тоже за вторую таблицу.

    Выбирать потом проще одним запросом через leftJoin. Используй pdoTools и кеширование не понадобится.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2