【发布时间】:2011-01-18 07:20:42
【问题描述】:
我一直致力于开发一个复杂的 PHP 系统,该系统融合了社交网络理念中的元素,但针对的是一群封闭的人。我有几个模块、照片和视频画廊、每个模块和子模块的完整评论系统、私人消息、带有 GUI 的个人电子邮件等等。
我的问题是,无论我多么努力,我似乎都无法以一种高效的方式为通知和新闻提要部分设计后端,就像 facebook 那样。这些模块几乎都是事件驱动的,因此将它们连接到通知系统应该不是问题。希望一些集体头脑风暴能解决我的问题。
我只会在这篇文章中解决我对通知部分的担忧(如果我也包含新闻提要,这将成为一个非常长且混乱的帖子)。
这是我的第一个 MySQL 表草稿。
通知ID 首要的关键 通知模块 模块类型外键 - 照片、视频、评论、消息 通知构造函数 触发创建此通知的元素的外键(类型为“notificationModule”) 通知用户 此通知针对的用户 通知时间 创建通知的时间 通知标志 通知已读标志可能的问题/冲突
- 如果一个用户评论了两个不同用户已经评论过的照片,会触发三个通知吗?照片上传者一个,每个评论者一个? (影响 notificationUser)
- notificationTime 是创建时间。继上述问题后,我们是否应该不创建新通知,该字段应替换为 notificationUpdateTime 或者可能存在于它旁边?
我的目标是降低代码复杂性和提高数据库效率。试图将数据库层与代码层分开让我在网站的这一部分感到困惑:(
我对所有问题和想法持开放态度。
【问题讨论】:
-
我只是想确保我清楚您的要求。您是否建议将数据库用作一种通知队列?换句话说,让事件将通知放入表中,然后有一个单独的脚本或进程来使用它们,从表中删除它们并传递它们?如果是这样,这似乎是解决问题的一种相当有效且可扩展的方法。
-
是的,这正是我所提议的。尽管我担心的是处理通知的脚本的效率。最好有一个脚本来根据数据库中的条目查找要通知的用户,还是直接将这些通知直接针对一个用户。这意味着如果有 10 个人已经在评论某事,则向数据库中插入 10 个新条目。
标签: php mysql notifications social-networking