首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过php维护已读/未读消息

如何通过php维护已读/未读消息
EN

Stack Overflow用户
提问于 2015-11-24 23:20:12
回答 1查看 2.3K关注 0票数 1

在这篇文章之前,这个问题可能已经被问过很多次了,但我找不到一个合适的答案来完美地满足我的需求。

假设我有两个表:

代码语言:javascript
复制
table-1: table_msg
-------------------------------------------------------
 msg_id |       msg_subject       | create_time
-------------------------------------------------------
    1   | welcome to this site    | 2015-01-01 10:20:30
-------------------------------------------------------
    2   | How to visit this site  | 2015-01-05 10:30:00
--------------------------------------------------------
    3   | Plz pay your member fee | 2015-03-10 09:00:00
--------------------------------------------------------
    4   | Important Notice        | 2015-06-01 12:20:00
--------------------------------------------------------
    5   | Plz change your password| 2015-06-15 13:24:01
--------------------------------------------------------


table-2: table_user
    -------------------------------
     user_id |    last_login
    -------------------------------
        1    | 2015-03-01 07:00:00
    -------------------------------

我几乎一直看到解决方案,因为user_id-1最后一次登录是在msg_id-3之前,所以如果user_id-1登录2015-06-02,他会有02条新消息msg_id-3msg_id-4。我可以用css加粗这两条消息的主题,将其显示为UNREAD。现在假设登录后user_id-1打开了msg_id-4,但没有打开<代码>D10,所以<代码>D11仍然是<代码>D12。

现在,当同一个用户再次登录2015-06-20,那么在他最后一次登录之后,msg_id-5可以很容易地识别为UNREAD,因为它是在他最后一次登录2015-06-02之后发布的,它可以设置为粗体,但是msg_id-3在他最后一次登录之前发布但仍然没有打开。它也是UNREAD,应该是粗体字体。

如果没有如下所示的单独表格,我如何将msg_id-3标识为UNREAD

代码语言:javascript
复制
table-3: read_msg
------------------------
 id | user_id | msg_id
------------------------
  1 |    1    |    1
------------------------
  1 |    1    |    2
------------------------
  1 |    1    |    4
------------------------

table-3对于少数用户来说是很好的,但是如果用户数量是5000,消息总数是10000或更高,那么这个表对于mysql引擎来说将是一个相当大的表,而且它将每天以几何级数的速度增长。

是否有任何机制/技术或算法,使得与上次登录后发布的消息一起,在上次登录之前未打开的消息也可以被识别为UNREAD,而不需要巨大的read_msg表?

EN

回答 1

Stack Overflow用户

发布于 2015-11-24 23:32:43

为什么不向表中添加一个状态为(1 =已读,0=未读)的列(布尔值),它会在打开某个消息时将状态更新为已读。

表3: read_msg

id | user_id | msg_id|read

1|1| 1|0

1|1| 2|1

1|1| 4|0

考虑以下场景:

用户登录后,有7条未读消息。他选择只读1。如果您创建一个查询/算法来使用他上次登录的时间来查看未读消息,它将看到他在消息发布后登录。但他读过吗?不..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33897386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档