1

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

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

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

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

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

当我谈到 cron 作业时,cron 作业可以跨圈吗?因此,如果我让它每分钟运行一次 cron 作业,并且该页面需要 2 分钟来发送所有电子邮件,那么该 cron 作业会在一分钟后再次运行,还是会等待 2 分钟直到最后一个 cron 作业处理完毕?

谢谢你的帮助!

4

1 回答 1

1

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

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

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

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

于 2012-08-09T03:33:20.827 回答