用 PHP 构建多通知系统的最佳方法

Posted

技术标签:

【中文标题】用 PHP 构建多通知系统的最佳方法【英文标题】:Best Way To Build A Multi-Notification System in PHP 【发布时间】:2012-05-19 15:21:49 【问题描述】:

我目前正在开发一个移动应用程序,可以让您向朋友询问收藏夹,它是一个 html5 前端和一个 php 后端。我不知道构建通知系统的最佳方法是什么,更多的是数据库架构而不是实际代码本身。

移动应用流程如下:

用户请求帮助 用户可以选择;通知所有朋友、通知最喜欢的朋友或通知附近的朋友 根据用户的选择,通知人们

在 PHP 和 mysql 中最好的方法是什么?我并不是真的要求任何人为我编写 PHP 代码,而是绘制出最理想的 MySQL 表和字段模式,因为这是我目前所坚持的。提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以创建一个通知表,例如:

from_user | to_user | notification | seen

然后每当您想通知用户时,您只需添加一条包含所需信息的记录并将seen 设置为0 / false

然后当用户阅读通知时,您将该参数设置为1 / true

例子:

from_user | to_user | notification | seen
    -          -          -           -

用户 john 通知用户 jeff:

from_user | to_user | notification | seen
   john      jeff       whatever..    0

用户 jeff 阅读了通知:

from_user | to_user | notification | seen
   john      jeff       whatever..    1  

【讨论】:

所以基本上如果用户选择通知最喜欢的朋友,我会首先进行查询以获取当前用户最喜欢的用户 ID,然后为每个用户批量插入通知表身份证?这似乎足够合乎逻辑。最初我确实想到了这样的事情,但我想也许还有另一种方法。这似乎是合乎逻辑的事情。 @Dwayne,是的。或者你可以做一个子查询(dev.mysql.com/doc/refman/5.5/en/subqueries.html)。无论如何,这似乎是最合乎逻辑和最干净的方式。我还会删除所有超过 7-14 天的通知以优化所有内容,但这取决于你。 一种简单但可靠的方法+1【参考方案2】:

为什么不在一个名为“通知”的表格中列出所有通知

id | user_id | from_user_id | notification
id = 通知 ID user_id = 通知是谁? from_user_id = 谁发送了通知? 通知 = 消息

然后作为伪代码:

// Create a notification from User A to User B
$this->db->insert ('notifications', array ('user_id' => $friends_id, 'from_user_id' => $current_user_id, 'notification' => $message));

 // The meanwhile, on your home page or somewhere, wherever you want to display notifications
 $this->db->where ('user_id', $current_user_id)
 $notifications = $this->db->get ('user_id');
 foreach ($notifications as $notification)
 
         // Display the notification as needed
         // Optionally delete the notification as it is displayed if it is a "one off" alert only
 

【讨论】:

感谢您的回答。我同意 Jeffrey 首先发布的答案,但感谢您抽出宝贵时间做出回应,因此我对您投了赞成票。【参考方案3】:

扩展杰弗里的答案:

id  |  from_user | to_user | notification | seen | timestamp
 -         -          -          -           -         -

时间戳将帮助您确定特定通知发生的时间。您还可以通过使用timeago.js 或Livestamp.js 扩展您的脚本来创建时间时刻

它还可以帮助您创建通知时间线,并且通知的维护会更简单。

【讨论】:

以上是关于用 PHP 构建多通知系统的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

开课通知 | 高级系统架构设计全程演练与最佳实践

关于举办微服务架构设计与最佳实践 培训班的通知

在linux中监视文件系统更改的最佳方法

建立大型电子邮件通知系统都有哪些方法?

PHP中的真实通知/推送通知系统

需要初学者 Web 开发人员的建议。构建用户通知系统