【发布时间】:2012-11-24 16:28:14
【问题描述】:
我想异步发送电子邮件以获得更快、更轻松的 http 响应,但我正在为许多新概念而苦苦挣扎。
例如,文档谈到了spool。它说我应该使用带有文件的假脱机,然后使用命令发送电子邮件。但是我应该如何运行该命令?如果我将 cronjob 设置为每 1 分钟执行一次该命令(cron 中可用的最小值),用户将不得不平均等待 30 秒才能发送他们的电子邮件(例如,注册电子邮件)。
所以我想改用队列。我已经在使用RabbitMQBundle 进行图像处理(例如,缩略图创建)。但我只定期使用这个,所以它是在 cronjob 中使用的。
也许我应该创建一个daemon,它始终等待新邮件到达电子邮件队列并尽快发送?
【问题讨论】:
-
延迟 30 秒有什么问题?就像你说的那样:一个cron作业每1分钟执行一个命令,命令本身会详细说明队列。
-
@Gremo 问题是如果服务器负载不大,我应该可以立即发送注册邮件。图像处理也是如此,想象一下我接受用户上传的图像。让他们为每次提交等待 30 秒(更不用说 1 分钟)会损害用户体验。
-
那么我认为不需要恶魔。您可以从 PHP 本身以异步方式立即假脱机并触发命令。
-
@Gremo 这会为每封电子邮件创建一个进程,不好。
标签: symfony rabbitmq daemon amqp swiftmailer