用 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 构建多通知系统的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章