Обработка непрочитанных сообщений в PHP / MySQL

Для личного проекта мне нужно создать форум, используя PHP и MySQL. Я не могу использовать уже созданный пакет форума (например, phpBB).

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

tbl_userReadPosts: user_id, post_id, read_timestamp

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

Другой вариант - отслеживать последнюю активность пользователя в виде отметки времени, а затем извлекать все сообщения, сделанные после обновления их последней активности. Теоретически это работает, но предположим, что пользователь пишет очень длинный пост, а тем временем несколько участников также начинают новые обсуждения или отвечают на сообщения в других обсуждениях. Когда пользователь отправляет свое новое сообщение, его последнее действие будет обновлено и, таким образом, не будет соответствовать тем, что были сделаны за это время.

Есть ли у кого-нибудь опыт в этом, и как вы справились с этим?

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

Мысли и мнения, как всегда, принимаются с благодарностью.

16
задан BenM 5 April 2011 в 15:47
поделиться