Для личного проекта мне нужно создать форум с использованием PHP и MySQL. Я не могу использовать уже построенный пакет форума (например, phpBB).
В настоящее время я работаю над логикой, необходимой для создания такого приложения, но это был долгий день, и я борюсь с концепцией обработки непрочитанных сообщений для пользователей. Одно из моих решений заключалось в том, чтобы иметь отдельную таблицу, в которой по существу хранятся все идентификаторы почтовых ящиков и идентификаторы пользователей, чтобы определить, были ли они прочитаны:
tbl_userReadPosts: user_id, post_id, read_timestamp
Очевидно, что если в этой таблице появляется идентификатор пользователя, мы знаем, что они прочитали сообщение. Это замечательно, если только у нас есть тысячи должностей в день (что более чем возможно в предлагаемой системе) и тысячи пользователей. Эта таблица станет огромной в течение нескольких дней, если не часов.
Другим вариантом будет отслеживание последнего действия пользователя как метки времени, а затем получение всех сообщений, сделанных после их последнего действия. Это работает теоретически, но скажем, что пользователь пишет очень длинный пост, а тем временем несколько участников также запускают новые потоки или отвечают на сообщения в других потоках. Когда пользователь отправляет свой новый пост, его последнее действие будет обновляться и, таким образом, не соответствовать тем, которые были сделаны за это время.
Есть ли у кого-нибудь опыт с этим, и как вы справились с этим?
Я проверил phpBB, и кажется, что система назначает пользовательский сеанс каждому пользователю и работает на этой основе, но документация довольно скудна относительно того, как это касается непрочитанных сообщений.
Мысли и мнения с благодарностью получили, как всегда.