用户注册时获取实时通知


Getting live notifications when users register

当有人注册到我的网站时,我想创建一个通知系统。我想要的通知系统类型是类似stackoverflow或Facebook的。我希望出现一个数字类型的通知,显示我有多少新注册,但一旦我点击查看通知(新注册),我希望通知警报(就像红色方块stackoverflow一样)消失。

我是用PHP写这篇文章的,有一个名为users的数据库表,我可以从中提取用户。我只是不确定如果不选择所有用户给我一个数量,我怎么能收到这样的通知?

假设我有20个用户和2个刚注册的新人。我想要一个显示数字为2的通知。然后当我点击它时,通知就会消失。

我该怎么做呢?

我正在设计这样的系统。

我这样做的方法是让应用程序将事件的结构化日志写入消息队列/消息代理。

然后我有一个消息使用者,它读取事件并更新我想要的系统中的任何度量。

在这种情况下,您需要一个消息使用者来决定哪些用户应该接收哪些消息(有些消息可以发给所有人,有些消息只发给特定的人)。

每个用户都必须轮询提供这些消息的API,或者打开一个websocket以将数据作为流接收(这样会更快)。

我将在消息使用者和API之间放置一个中间存储。我推荐一些轻便快速的产品,比如Redis。

这需要建立大量的基础设施,还有其他快速而肮脏的解决方案,但在我看来,这是非常少的。

假设每个用户都有一个唯一的ID,只需添加很少的PHP代码就可以实现。

答案肯定取决于你自己的需求和你想要实现的复杂程度,如果你想实现一些重大的、可进化的东西,@firelynx的答案可能真的很棒(你肯定可以玩得很开心,学到很多东西)。

但是,如果您只想要一个非常基本的实现,我建议您在数据库中创建一个"通知"表,您可以(至少)使用列[id,user_id,message,new],其中new是tinyInt或任何等效项。

然后向您选择的用户添加一些通知,默认情况下new应为1。当用户看到通知时,只需将相关通知的new设置为0即可。然后可以根据用户组或某些条件来选择应该接收这些通知的用户。

如果你想从一开始就做一些简单而不那么闪亮的事情,那就应该能很好地完成任务,你也可以添加一个"图标"栏来增加一些乐趣。