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