使用 PHP + MySQL + Cron安排电子邮件


Scheduling Emails Using PHP + MySQL + Cron

我正在用PHP + Laravel+ MySQL编写一个Web应用程序。

系统中,用户可以在任意时间安排电子邮件(和其他API调用((就像您在WordPress中安排帖子一样(。我可以使用 CRON 大约每 5 分钟检查一次数据库,以查找应该发送、发送和更新其状态的电子邮件。

但是,这是一个SaaS应用程序。因此,在特定时间发送的电子邮件数量可能会迅速增长。我可以在每次运行 CRON 脚本时创建一个"锁定文件",以便一次只运行它的一个实例。脚本完成执行后,锁定文件将被删除。

但是对于潜在的大数据,我想要一种同时处理多条消息的方法,可能使用多个"工作线程"。是否有任何现有的解决方案来管理这样的队列?

是的!任务/消息/作业队列就是您正在寻找的!它们允许您将各种任务放入队列中,您可以从中检索它们并处理它们,此过程可以水平扩展,因为每个工作人员都可以在完成前一个任务后拉取任务。

你应该每分钟/两分钟都有一次 cron,它只是上传任务和需要做什么。这将确保 cron 非常快。

看看 Iron.io 以下是网站的摘录,其中很好地概述了这些类型的系统:

易于使用的可扩展任务队列,为云开发人员提供 卸载前端任务、运行计划作业和处理的简单方法 后台和大规模任务。

Gearman也是一个很好的解决方案,您可以自己使用,而且非常简单。您可以使用许多不同的语言发送消息,并使用不同的语言来处理它。比如说 PHP -> C 等...

维基百科链接将告诉您您需要知道的所有内容,以下是快速摘录:

消息队列提供异步通信协议, 这意味着消息的发送方和接收方不需要 同时与消息队列交互。放置在 队列将被存储,直到收件人检索它们。