PHP存储未读帖子和通知的想法

时间:2012-03-20 21:08:50

标签: php mysql serialization

所以我一直在玩我正在构建的论坛,并且已经停留了一段时间,如何跟踪未读的帖子和通知而不在数据库中存储大量数据。在看了一些解决方案之后,我相信我想出了一个可以满足我需求的解决方案,但需要一套新的眼睛来指出我没想到的。这是我的想法的架构。

1)当用户登录时,请检查当前time()和上次登录time()之间的帖子。

2)如果找到帖子,添加到数组,然后serialize()数组并保存到数据库中的成员行。

3)如果不是空的话,将数组输出到用户。

这样它只会检查未读帖子并存储在实际登录论坛的用户身上,而不是占用不必要的空间来保存非活动用户的未读ID。我仍然想知道这不是一个好主意,因为如果用户没有阅读帖子,那么数据库中的序列化可能会变得太大而无法管理。

有没有人在我的思维方式中看到问题?如果是这样,请告诉我。

2 个答案:

答案 0 :(得分:4)

在实际出现问题之前不要担心空间。存储帖子ID(整数)和用户ID(另一个整数)的表将很小。即使您有数千个帖子和数千个用户,您也可以放心地假设:

  • 很大一部分用户将处于非活动状态(一次性注册以发布内容并忘记整个问题)
  • 即使是活跃的会员也不会阅读所有帖子,而只会阅读他们感兴趣的主题中的(相对较小的)部分。

另一件事:如果你真的想要减少空间,不要存储未读的帖子。仅存储每个帖子中的最后一篇阅读帖子。这是每个用户每个线程一条记录,并且只假设用户曾经打开过线程。

答案 1 :(得分:1)

  1. 如果用户登录但未阅读帖子,您的方案仍会将其标记为已读。
  2. 如果用户一次登录两次(从台式电脑和iPad登录),会发生什么情况?
  3. 让每个用户的论坛视图都带有一个标志来指示他们是否阅读每个人的问题是什么?这种机制显然有助于扩展到upvoting,收藏等等。