当前位置: 首页 > 面试题库 >

PHP论坛-如何应对未读的讨论/主题/帖子

余弘新
2023-03-14
问题内容

我知道这个问题已经被问过几次了,但是没有一个答案令我满意。这是因为几乎所有人都涉及与数据库相关的巨大读取/写入过程,我希望不惜一切代价避免这样做。

关于未读的讨论/主题/帖子,有很多需要考虑的地方。我不知道MyBB,vBulletin,Invision电源板,Vanilla,phpBB等论坛系统如何解决该问题,所以我想向大家介绍您的经验。我知道,仅为此目的使用数据库表是最简单的方法,但是当社区每月有10,000多个成员和1000个新主题时,这将涉及大量的读/写操作。很难,但是应该有一种避免服务器过载的方法。

那么,您如何看待该问题的最佳实践以及其他论坛系统如何应对?


问题答案:

没有太多选择。

  1. 每个用户标记每个阅读器线程。

    • 劣势:非常活跃的论坛中有很多行
    • 优点:每个用户都知道与帖子有关的内容。
    • 标记每个用户的每个未读线程。

    • 缺点:如果很多用户不活动,则带有“未读”行的空间很大

    • 解决方案:添加生命周期时间戳记并使用cron删除旧记录
    • 优点:每个用户都知道与帖子有关的内容。
    • 使用时间戳确定是否将其显示为未读。

    • 缺点:用户不知道的是真正的未读线程,标记仅显示自上次登录以来的“新trheads”

    • 优势:节省空间

另一种选择是混合解决方案,即

1和3)如果线程不超过X天并且没有为用户标记为已读的行,则将线程显示为“未读”。X天前可以删除“已读”行,而不会影响任何行。

优点

  • 较少的空间用于确定未读线程

缺点

  • 创建一个cron以保持系统清洁
  • 用户不知道他们读取的线程是否早于x天。

优点

  • 每个用户都知道哪些“新帖子”已读或未读。


 类似资料:
  • 自动检测设定论坛最新帖子,显示最新帖子列表,新帖自动提示,让你成为论坛抢沙发第一人!

  • php+mongodb能实现类似于”掘金“这个论坛的帖子功能,首页展示的基本上不会重复,并且都是随机的, 使用list存入文章id,然后把id变成随机的,但是重复刷新分页变成了1的话,数据又还原了,如果监听分页页数变成了1就重新排序一次的话,对于游客就不是很友好

  • Objective-C是一种通用的,面向对象的编程语言,它将Smalltalk样式的消息传递添加到C编程语言中。 这是Apple用于OS X和iOS操作系统及其各自API(Cocoa和Cocoa Touch)的主要编程语言。 在学习Objective-C编程语言时,此参考资料将引导您通过简单实用的方法。

  • OAuth2.0是一种开放式授权协议,允许通过在Facebook,GitHub等HTTP服务上启用客户端应用程序来访问资源所有者的资源。它允许将存储在一个站点上的资源共享到另一个站点,而无需使用其凭据。 它使用用户名和密码令牌代替。

  • Pascal是一种程序编程语言,于1968年设计,由Niklaus Wirth于1970年出版,以纪念法国数学家和哲学家Blaise Pascal而命名。 Pascal运行在各种平台上,例如Windows,Mac OS和各种版本的UNIX/Linux。 本教程将帮助您深入了解Pascal以继续使用Delphi和其他相关框架等。

  • Parrot是一个虚拟机,旨在有效地编译和执行解释语言的字节码。 Parrot专为动态语言而设计。 Parrot是各种语言的目标,如Perl,Tcl,Ruby,Python等。在本教程中,我们将学习使用Parrot for Perl编译器。