gpt4 book ai didi

php - 创建论坛灯泡(未读)系统的最有效方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 06:31:52 30 4
gpt4 key购买 nike

好吧,另一个有趣的问题是 50 号公路。

我们想实现一个真正的论坛灯泡系统,其中用户未读的帖子(在创建用户帐户后)显示为未读,直到该状态被清除或直到用户阅读它们。

我们认为最好和最简单的方法是实现一个未读消息表。

列是:user_idboard_idthread_idpost_idtimestamp隐藏

这对于查看每个用户哪些板/线程/帖子未读(并链接到它们)非常有效且非常快,但是即使只有一个 SQL 查询,用户发帖到论坛的速度也非常慢正在运行:

INSERT IGNORE INTO `forums_lightbulb` SELECT `id`,'x','x','x',UNIX_TIMESTAMP(),0 FROM `users`

我确定这是拥有 3065 个用户帐户的结果。我怎样才能加快这个过程?我希望系统尽可能保持实时。

重要提示:请将您的答案限制在没有额外预算的共享托管环境中。我们仅限于 PHP 和 MySQL 5.1.53-log

最佳答案

PHPBB 所做的是一种非常快速的方法。它保留了一个表,用于标记每个线程和每个论坛上次用户打开它的时间。并使用它来确定是否有未读消息。它允许用户*主题 + 用户*论坛存储使用方案,同时允许使用非常简单和快速的查询进行检查。

你可以从数据库结构看出它是如何工作的。

# Table: 'phpbb_forums_track'
CREATE TABLE phpbb_forums_track (
user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
mark_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (user_id, forum_id)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;

# Table: 'phpbb_topics_track'
CREATE TABLE phpbb_topics_track (
user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
mark_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (user_id, topic_id),
KEY topic_id (topic_id),
KEY forum_id (forum_id)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;

关于php - 创建论坛灯泡(未读)系统的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823110/

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