gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:31:03 25 4
gpt4 key购买 nike

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

假设我有两个表:

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-12015-06-02 上登录,他有 02 条新消息 msg_id-3msg_id-4。好吧,我可以通过 css 将这两条消息的主题加粗显示为 UNREAD。现在假设 user_id-1 登录后打开了 msg_id-4 而没有打开 msg_id-3,所以 msg_id-3 仍然是 UNREAD

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

如何在没有像下面这样的单独表格的情况下将 msg_id-3 识别为 UNREAD:

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 表?

最佳答案

为什么不直接在表格中添加一个状态为(1 = 已读,0 = 未读)的列( bool 值),在打开某条消息时更新状态为已读。

表 3:读取消息

编号 |用户 ID | msg_id|已读

1 | 1 | 1|0

1 | 1 | 2|1

1 | 1 | 4|0

考虑以下场景:

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

关于mysql - 如何通过php维护已读/未读消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33897386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com