1

我正试图解决这个问题:

我的代码库中有许多函数可以启动使用SwiftMailer发送电子邮件。假设在 1 秒内,1000 个用户启动了不同的功能,这些功能以发送一封(或多封)电子邮件结束。该类如何在没有任何数据库访问权限的情况下捕获所有这 1000 个请求并将它们排队?如果它是启动 1000 个请求的单个函数,我了解该类如何迭代整个数组 - 使用我定义的“批量发送”规则(一次 100 个,例如,休息 2 分钟)。但我明白它是如何从多个用户发起电子邮件的。

也就是说,如果我使用 Gmail Apps SMTP 服务器发送我的所有电子邮件,有哪些好的限制?我将远不及我在上面示例中使用的每秒 1000 个请求,但在未来几分钟内可能会有 100 个请求。

谢谢大家。

4

1 回答 1

0

如果您无权访问“数据库”;您的选择是:

  1. 回退到用于管理队列的平面文件(即基本上使用一系列平面文件作为您自己的数据库,按时间戳排序并按顺序发送;那些在同一秒内到达的按任何顺序进行,可能按字母顺序给出一个随机的唯一名称?
  2. 使用 memcached 将电子邮件存储在内存中 - 警告:如果 memcached 服务器重新启动,将丢失所有信息。

一秒钟内 1000 个请求是相当少的;我的电子邮件一般规则是一小时内不会超过 2000 封。GMail 确实在http://support.google.com/mail/bin/answer.py?hl=en&answer=22839在 500 个唯一电子邮件地址上宣传了他们的限制(以防止垃圾邮件),所以这对您来说可能是个问题。还有其他提供商允许更多,但您需要付费。

于 2012-08-06T01:02:54.653 回答