【发布时间】:2013-10-08 12:30:01
【问题描述】:
我想在我们的 web 项目中实现某种消息队列系统。我只是想知道这样做的最佳方法是什么。它是用 PHP (Yii Framework) 编写的,以 MySQL 作为数据库系统。
想法:
- 用户 1 向用户 2 发送消息,但该消息将放置在未来(即 02-11-2013 14:31)
- 用户 2 在 2013 年 2 月 11 日 14:31 在他/她的收件箱中收到用户 1 的邮件,并收到一封关于此新邮件的通知电子邮件。
我想了两种方法来做到这一点:
将来自用户 1 的消息插入到“消息”表中,其中包含应将消息传递给用户 2 的日期和时间。用户 2 只能在此日期和时间小于当前日期和时间时阅读它,并且时间(
WHERE addTime <= NOW())。将来自用户 1 的消息插入到“消息队列”表中。这是一个表,其中包含将来需要放置的所有消息。 cronjob(每分钟左右运行一次)会将日期和时间小于当前时间的所有消息放入“消息”表中,并将其从“消息队列”表中删除。可以直接向用户 2 发送电子邮件。
缺点:
- 方法一:无法向用户2发送通知邮件
- 方法 2:您必须设置一个每分钟运行一次的 cronjob(可以在未来放置一条消息,精度为一分钟)。通知邮件可以直接发送,但系统会很重,邮件很多。如果 cronjob 花费的时间超过一分钟,它将相互重叠,最终可能导致服务器关闭。
有人知道这样做吗?我实际上是在从服务器/数据库中寻找一些推送功能,它告诉我的脚本一条新消息已传递给用户 2,并且需要向用户 2 发送一封电子邮件。
【问题讨论】:
标签: php mysql sql yii push-notification