gpt4 book ai didi

php - 实现消息队列的最佳方式

转载 作者:行者123 更新时间:2023-11-30 23:12:33 24 4
gpt4 key购买 nike

我想在我们的 web 项目中实现某种消息队列系统。我只是想知道最好的方法是什么。它是用 PHP(Yii 框架)编写的,以 MySQL 作为数据库系统。

想法:

  • 用户 1 向用户 2 发送消息,但该消息将放置在未来(即 02-11-2013 14:31)
  • 用户 2 于 2013 年 2 月 11 日 14:31 在他/她的收件箱中收到了用户 1 的消息,并收到了一封有关此新消息的通知电子邮件。

我想到了两种方法:

  1. 将来自用户 1 的消息插入“消息”表中,其中包含消息应传递给用户 2 的日期和时间。只有当此日期和时间小于当前日期时,用户 2 才能阅读它,并且时间 ( WHERE addTime <= NOW() )。

  2. 将来自用户 1 的消息插入“messageQueue”表中。这是一个表,包含所有需要放置在未来的消息。 cronjob(大约每分钟运行一次)会将日期和时间小于当前时间的所有消息放入“消息”表中,并将其从“消息队列”表中删除。可以直接向用户 2 发送电子邮件。

缺点:

  1. 方法 1:无法向用户 2 发送通知电子邮件
  2. 方法 2:您必须设置一个每分钟运行一次的 cronjob(一条消息可以在未来以一分钟的精度放置)。通知邮件可以直接发送,但是会是一个有很多消息的繁重系统。如果 cronjob 花费的时间超过一分钟,它将相互重叠,最终可能导致服务器关闭。

有人知道这样做吗?我实际上是在从服务器/数据库中寻找一些推送功能,它告诉我的脚本一条新消息已发送给用户 2,并且需要向用户 2 发送一封电子邮件。

最佳答案

您可以使用 CURL 而不是 CRON,它会自行请求您的“CRON JOB SCRIPT”。它将在 previous 完成后调用。如果脚本将在 1 分钟左右的时间内运行,您可能想要延迟 CURL 请求。

关于php - 实现消息队列的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19247723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com