在多租户网站中发送大量电子邮件的最有效方式?

时间:2012-08-09 03:28:49

标签: sendmail sendgrid

我有一个多租户网站。我的一些客户在这里和那里发送了1封电子邮件,其他人可能会一次发送1,000封电子邮件。

我使用SendGrid.com作为我的邮件服务器,使用SwiftMailer.org作为我的PHP代码。

问题是每封电子邮件需要一秒左右才能发送。我想它需要连接到SendGrid.com进行身份验证等。因此,如果您发送1,000封电子邮件,它实际上需要大约1,000秒才能超时。

我认为最好的方法是将电子邮件存储在数据库中,然后cron作业将它们发送出去。

这会是最有效的方式吗?我应该一次只发送一定数量的电子邮件吗?那么例如每个cron工作100个?

虽然我正处于cron工作的主题,但cron的工作能否超过一圈?因此,如果我每分钟运行一次cron作业,并且页面花了2分钟发送所有电子邮件,那么cron作业会在一分钟后再次运行,还是会等待2分钟直到最后一个cron作业处理完毕?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您有一个IO绑定任务(在这种情况下是网络/网络服务IO)。

IO绑定任务非常适合多线程。

启动发送应用程序中的多个线程,以并行处理多个电子邮件发送请求。

如果您希望定期检查是否已准备好发送电子邮件,cron是一个不错的选择。但是,您可能希望考虑一个持续运行(并且可能间歇性地休眠)的守护进程(a.k.a.服务)作为替代方案。