【发布时间】:2014-08-24 22:30:24
【问题描述】:
我正在尝试在我正在构建的 Laravel 4 应用程序中实现通知功能。目前只有一种情况会导致发布通知,但它可能会扩展到多个。目前的条件包括当 GroupB 中的用户执行涉及他们的操作时通知 GroupA 的成员。为了论证起见,GroupA 和 GroupB 都不是有限数量的用户,但 GroupB 将大于 GroupA。
我最初的反应是从会话中获取 last_activity 并将其与数据库中的必要表进行比较,以查看之后是否有任何项目基于 created_at 字段。这是假设 Laravel 在请求结束而不是开始时更新 last_activity。我有疑问的是,我必须获取 last_activity,然后为 GroupA 中的用户发出的每个请求在表上进行查找。我认为这不会很好地扩展。
其次,我想到了某种队列?豆茎之类的东西。如果我使用 beanstalk,GroupA 中的用户是否有可能提取与他们相关的所有操作(基于 user_id)而留下不适合他们的操作?或者我需要为每个用户实现一个单独的队列吗?对于可能拥有 1000 多个用户的群组来说,这可能吗?这些队列是否会无限期地保持活动状态,以便用户下次登录时将通知推送给它们并由用户拉入?我以前从未使用过队列,我理解这个概念,但我不确定实现。
让我知道是否还有其他我应该做的事情,以前没有实现过这样的事情。
【问题讨论】:
-
通知有两种方式,推送和拉取。在拉取的情况下,您可以每 5 分钟(更多/更少)发送一个 AJAX 请求以接收通知。推送是指服务器将数据推送给用户,用户会得到即时通知(如实时聊天)。据我所知,这可以用 Node.js 完成。当我想到通知时,我认为您不需要实时,因此 AJAX 会做得很好。
标签: php laravel laravel-4 notifications queue