使用PHP + MySQL + Cron调度电子邮件

时间:2013-10-03 11:13:26

标签: php laravel task-queue

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

在系统中,用户可以在任意时间安排电子邮件(和其他API调用)(非常类似于您在WordPress中安排帖子的方式)。我可以使用CRON每5分钟检查一次数据库,以查找应该发送的电子邮件,发送它们,并更新它们的状态。

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

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

1 个答案:

答案 0 :(得分:2)

是的!你正在寻找Task/Message/Job个队列!它们允许您将各种任务放在队列中,您可以从中检索它们并处理它们,此过程可以水平扩展,因为每个工作程序在完成前一个任务后都可以执行任务。

你应该让cron可能每分钟/两分钟只上传任务和需要做什么。这将确保cron非常快。

看一下Iron.io这是网站的摘录,它对这些系统进行了很好的概述:

  

易于使用的可扩展任务队列,为云开发人员提供支持   卸载前端任务,运行预定作业和处理的简单方法   背景和规模的任务。

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

Wikipedia link会告诉你需要知道的一切,这里有一个快速摘录:

  

消息队列提供异步通信协议,   意味着消息的发送者和接收者不需要   与消息队列同时进行交互。邮件放在上面   存储队列直到收件人检索它们。