使用Swiftmailer和Symfony2的多个线轴

时间:2015-03-31 20:58:55

标签: php email symfony cron swiftmailer

使用Swiftmailer发送最高电子邮件费率的最佳方法是什么?

我们拥有一个电子邮件自动化工具,有时会发送40,000封电子邮件。我们使用spool:send命令的平均速率约为50封/分钟。我已经尝试在cron上复制相同的命令5次并且它有效(即它发送~250封电子邮件/分钟),但看起来SMTP服务器晕了,因为有些联系人正在接收带有其他联系人信息的电子邮件(任何关于可能导致什么的想法?)。

所以现在我正在考虑设置5个不同的邮件程序,这些邮件程序将电子邮件发送到不同文件夹并使用cron运行5个命令,每个邮件都用于其中一个邮件程序。应该有用吗?还有其他推荐的解决方案吗?

1 个答案:

答案 0 :(得分:3)

如果您每分钟发送250封电子邮件,那么您需要比cron和Swiftmailer假脱机更具弹性的东西。它很难扩展,是调试的噩梦,也不是非常不灵活。如果您每分钟只发送几封电子邮件,那么Swiftmailer假脱机非常棒,但是比这更大,并且难以扩展和调试的噩梦。

相反,请使用PHP ResqueRabbit MQ等作业队列(两者都是开源的)。你可以复制' spool'通过拥有需要发送的电子邮件队列,您可以添加多个工作人员和队列。您还可以拥有第二个实际将作业添加到第一个队列的队列。

优点是Rabbit MQ带有一个管理器界面,因此你可以看到发送的电子邮件数量,失败的数量等等。此外,通过添加它可以更容易扩展和缩小例如,当您处于重负荷时,将工人搬走。

来自Sensio Labs的Kacper去年与Symfony进行了一次关于Rabbit MQ的讨论 - http://www.slideshare.net/cakper/2014-0821-symfony-uk-meetup-scaling-symfony2-apps-with-rabbit-mq