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

标签 php laravel task-queue

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

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

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

但是对于潜在的大数据,我希望有一种方法可以同时处理多个消息,可能使用多个“工作人员”。有没有现有的解决方案管理这样的队列?

最佳答案

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

你应该每分钟/两分钟都有一个 cron 来上传任务和需要完成的事情。这将确保 cron 非常快。

看看Iron.io以下是网站的摘录,其中对此类系统进行了很好的概述:

An easy-to-use scalable task queue that gives cloud developers a simple way to offload front-end tasks, run scheduled jobs, and process tasks in the background and at scale.

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

Wikipedia link将告诉您需要了解的一切,以下是快速摘录:

Message queues provide an asynchronous communications protocol, meaning that the sender and receiver of the message do not need to interact with the message queue at the same time. Messages placed onto the queue are stored until the recipient retrieves them.

关于php - 使用 PHP + MySQL + Cron 安排电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19157725/

相关文章:

python - 如何使用 App Engine 中的任务队列 Python API 传递压缩数据?

php - Ajax分页sql查询

php - 没有得到正确的经纬度和完整地址

php - 将来自两个不同循环的数据放入谷歌饼图中

javascript - 如何使用 laravel 保存裁剪后的头像

php - Laravel Eloquent 模型中的字段

php - 提供奇怪 URL 的工具提示子菜单链接

php - 在路由中使用资源时在 Controller 中使用自定义函数 - Laravel

java - Google App Engine 上的推送队列与拉取队列

java - 将 App Engine 任务队列传递到后端的语法有什么问题?