Уведомление о новых сообщениях с помощью PHP и MySQL


Я знаю, как реализовать вещи в PHP и MySQL, но теперь у меня небольшая проблема с мышлением.

Есть сайт-форум. Каждый пользователь может опубликовать вопрос (например, stackoverflow). Итак, как это можно сделать, чтобы, когда пользователь вернется (через 2 дня или что-то в этом роде), он увидел (сообщение или предупреждение...), что у него есть новые сообщения в его теме?

Вы понимаете, что я имею в виду? Я не могу поместить все это в базу данных, я думаю, что это немного перегружено сервером??

Спасибо.

Author: John Brunner, 2012-04-20

3 answers

Если я правильно помню, вот как форум простых машин справляется с этим.

У каждого пользователя есть запись для каждого потока, на который он нажал. В записи хранится самый высокий идентификатор сообщения для этого потока на момент его нажатия.

Поскольку идентификаторы сообщений являются автоматически увеличивающимися целыми числами, любое новое сообщение будет иметь идентификатор сообщения больше, чем предыдущее.

Таким образом, когда пользователь просматривает список потоков, SMF видит, больше ли текущий самый высокий идентификатор сообщения в потоке, чем один из них хранится в записи потока пользователя. Если он больше, появляются новые записи, и поток получает значок "новые сообщения". В противном случае поток получит значок "нет новых сообщений". Кроме того, если нет записи потока, то пользователь никогда не посещал поток, и он получает значок "новые сообщения".

Когда пользователь фактически нажимает на поток, запись потока снова обновляется с самым высоким идентификатором сообщения.

 3
Author: Marcus Adams, 2012-04-20 14:26:27

Вы должны хранить lastActiveTime пользователя на сайте. Каждый раз, когда пользователь посещает поток или страницу, обновляйте это значение для них. В следующий раз, когда они вернутся, сделайте запрос для всех сообщений, созданных после lastActiveTime, и представьте список ссылок.

Это означает, что вам нужно добавить только одно поле в таблицу пользователей, и ничего больше. Это новое поле содержит простую дату, по которой вы можете определить свежесть определенных сообщений.

 4
Author: Sampson, 2012-04-20 14:17:44

Вы можете поместить все это в базу данных...

Куда еще все это могло бы пойти?

Волшебная страна? ^_^

Просто сохраните все это в базе данных с добавлением какого-либо элемента времени в каждую строку.

 -2
Author: Neal, 2012-04-20 14:17:37