gpt4 book ai didi

php - 通知及PHP+MySQL设计

转载 作者:行者123 更新时间:2023-11-29 11:28:59 25 4
gpt4 key购买 nike

我正在制作一个具有帖子和回复系统的网站。

我想做的是,当有人回复时,向那些曾经回复(或参与)该帖子的人发送通知。

我的想法是创建一个名为Notification的表,包含messageseen(已读/未读)字段。人们回复后,将记录插入到 Notification 表中。

这看起来简单直观,但如果有很多人参与,例如第 31 个用户回复,那么曾经回复过的 30 个人都会收到通知。这将生成 30 行 SQL 记录。第 32 个用户将创建 31 条记录。那么总行数将变为30+31=61

我的问题是

  1. 这是处理通知系统的好方法吗?
  2. 如果是这样,如何处理重复的通知(尚未看到但有新回复)
  3. 如上所述,这会给服务器带来巨大的负载吗?

非常感谢。

最佳答案

我正在创建类似的系统。这是我的经验:

  1. 我的通知表如下所示: id (int) |用户 ID (int) |帖子 ID (int) | last_visited(日期时间)。

  2. user_id + post_id 是 unique composite index .

  3. 因此,当用户打开页面时,我会在数据库中查找条目(user_id + post_id)。如果找到,则更新 last_visited 字段(如果没有找到),然后创建新行。

  4. 当我需要列出通知消息时,我只需查询在last_visited时间之后创建的所有消息。

  5. 我还有 cron 脚本,可以清除已关闭帖子或被禁止用户的通知。

至于你的问题:

1 和 2:您必须在要存储的数据量和站点性能之间找到平衡。如果您不需要存储所有这些数据,您可以按照我的方式进行。如果需要这些数据,您的方法会更好。

3:这取决于访问者数量和其他功能。但这里有一些建议。您必须对 MySql 表使用索引以获得更好的性能。此外,您还应该考虑删除无用通知的 cron 脚本。如果您每天的访问量超过 70 万,您应该考虑 MogoDb或其他高性能noSql数据库。

关于php - 通知及PHP+MySQL设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739887/

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