在 PHP / MySQL 中处理未读帖子

2024-05-26

对于个人项目,我需要使用 PHP 和 MySQL 构建一个论坛。我不可能使用已经构建的论坛包(例如phpBB)。

我目前正在研究构建此类应用程序所需的逻辑,但这已经是漫长的一天了,我正在努力解决为用户处理未读帖子的概念。我的一个解决方案是有一个单独的表,它基本上保存所有帖子 ID 和用户 ID,以确定它们是否已被读取:

tbl_userReadPosts: user_id, post_id, read_timestamp

显然,如果用户的 ID 出现在该表中,我们就知道他们已经阅读了该帖子。这很棒,除非我们每天有数千个帖子(这在所提议的系统中是不可能的)和数千个用户。这个表在几天甚至几小时内就会变得很大。

另一种选择是将用户的上次活动作为时间戳进行跟踪,然后检索上次活动更新后发布的所有帖子。这在理论上是可行的,但假设用户正在编写一篇非常长的帖子,同时几个成员也启动新线程或回复其他线程中的帖子。当用户提交他的新帖子时,他的上一个活动将被更新,因此与同时进行的活动不匹配。

有人有这方面的经验吗?你是如何解决的?

我已经检查了 phpBB,似乎系统为每个用户分配了一个自定义会话,并在此基础上工作,但关于如何处理未读帖子的文档非常稀疏。

一如既往,我们感激地接受想法和意见。


很抱歉这么快回答,但我只有一秒钟的时间。您绝对不想将读取的信息存储在数据库中,正如您已经推断的那样,该表会变得巨大。

您已经建议的内容之间的一些内容:存储用户最后的活动,并结合存储他们在 cookie 中看到的内容的信息,以确定他们已经阅读了哪些线程/帖子。

这将存储卸载到客户端 cookie,效率更高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP / MySQL 中处理未读帖子 的相关文章

随机推荐

  • 如何使用批处理文件安装文件夹中的所有.exe?

    我正在尝试开发以下算法 对于当前文件夹 包含脚本的文件夹 中的所有文件 执行以下操作 将文件一一安装 cls setlocal disableDelayedExpansion if PROCESSOR ARCHITECTURE x86 se
  • python matplotlib 保存图形而不显示

    我想创建一个直方图并将其保存到文件中而不将其显示在屏幕上 我现在拥有的代码默认显示该图 我找不到任何方法来抑制显示该图 我也尝试过 pyplot hist nrs 也有同样的问题 import math time matplotlib py
  • 如何处理 SIGTERM

    Java 有没有办法处理收到的 SIGTERM 是的 您可以使用以下命令注册关闭挂钩Runtime addShutdownHook http java sun com javase 7 docs api java lang Runtime
  • 如何随机化(洗牌)JavaScript 数组?

    我有一个像这样的数组 var arr1 a b c d 我怎样才能随机 洗牌它 事实上的无偏洗牌算法是Fisher Yates 又名 Knuth 洗牌 https en wikipedia org wiki Fisher E2 80 93Y
  • HTMLUNIT getformbyname 网站中未指定表单名称

    我正在尝试使用 HTMLUNIT 单击网站上的按钮 我按照本教程进行操作http htmlunit sourceforge net gettingStarted html http htmlunit sourceforge net gett
  • Flutter:设置AppBar的高度

    我怎样才能简单地设置高度AppBar在颤振中 栏的标题应保持垂直居中 即AppBar 您可以使用首选尺寸 https api flutter dev flutter widgets PreferredSize class html clas
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • 使用 API 密钥和机密保护 Spring Boot API

    我想保护 Spring Boot API 的安全 以便只有拥有有效 API 密钥和秘密的客户端才能访问它 但是 程序内部没有身份验证 使用用户名和密码的标准登录 因为所有数据都是匿名的 我想要实现的目标是所有 API 请求只能用于特定的第三
  • 如何在时间序列图中添加和定义多条线?

    我正在使用 python 的plotly 库创建一个基于线的时间序列图 我想将其连接到时间序列数据库 但目前我一直在使用 csv 数据进行测试 是否有可能有一个x and y轴 时间与值 并从另一个 csv 列值 主机 加载多行并附加到 x
  • AWS S3 JavaScript SDK - 网络错误:网络故障

    我正在尝试使用 AWS 在浏览器网页的示例中提供的示例 并且我不断收到NetworkingError Network Failure错误 这是我正在使用的
  • 使用 select 从套接字和标准输入读取

    我正在编写一个基于 ncurses 的聊天程序 起初 我只编写了网络内容 没有 ncurses 一切都工作正常 但添加图形后我无法让客户端应用程序正常工作 主要问题是同时从标准输入和套接字读取 在无 ncurses 的版本中 我使用了 pt
  • 可移植 C# 的最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我希望为 linux windows mac 任何其他平台编写一些 C 代码 并且正在寻找可移植代码的最佳实践 Project mono htt
  • 带有中间页面的 Django 管理操作:未获取信息

    我正在尝试创建一个管理操作 将自定义时间增量添加到某个日期 时间增量将从中间页面的输入中读取 确认后 我将将该增量应用到之前选择的每个实例 使用此代码 我针对这个问题进行了简化 我无法获取输入的时间增量的值 我无法判断用户是否按下了 应用
  • Scala SBT 版本依赖性二进制兼容性错误 scala-xml

    我有一个在 GitHub 上托管的项目 我使用 scala steward 来保持我的插件和依赖项最新 这在一段时间内有效 但现在使用此类自动更新却变成了一场噩梦 事情是这样的 在我的plugins sbt中 我依赖于scoverage 它
  • 索引越界异常

    你好 这段代码将返回indexoutofboundsException我真的不知道为什么 我想从中删除这些对象pointlist它们与中的对象相同list public void listOfExternalPoints List
  • IN 子句中带有参数列表的PreparedStatement [重复]

    这个问题在这里已经有答案了 如何在执行查询时为 JDBC 中的 preparedStatement 中的 in 子句设置值 Example connection prepareStatement Select from test where
  • 动态创建的数据源未传递到 CakePHP 中的关联模型

    我有一个模型 汽车 该汽车有几个关联的模型 让我们考虑其中一个与hasMany关系 轮 在我的 CarsController 中 我使用以下代码动态生成数据源 schemaName this gt Session gt read User
  • 如何更改 JavaScript 对象的顺序?

    我的 JavaScript 对象如下所示 ivrItems 50b5e7bec90a6f4e19000001 name sdf key 555 onSelect fsdfsdfsdf 50b5e7c3c90a6f4e19000002 nam
  • TortoiseSVN:如何从提交中忽略 bin 内容

    我使用 TortoiseSVN 1 7 9 我怎么能够ignore remove内容来自 bin文件夹当我svn commit项目文件夹 我不想提交诸如 dll pdb etc I put dll pdb进入svn 忽略属性 但它不起作用
  • 在 PHP / MySQL 中处理未读帖子

    对于个人项目 我需要使用 PHP 和 MySQL 构建一个论坛 我不可能使用已经构建的论坛包 例如phpBB 我目前正在研究构建此类应用程序所需的逻辑 但这已经是漫长的一天了 我正在努力解决为用户处理未读帖子的概念 我的一个解决方案是有一个