【问题标题】:Batch emailing mysql table setup?批量发送电子邮件mysql表设置?
【发布时间】:2012-02-20 15:08:37
【问题描述】:

我想出了一个用于我正在制作的简单批量电子邮件的架构。电子邮件发送者将通过运行 cron 作业的 php 脚本每 5 分钟发送 X 封电子邮件。问题是我认为这不是最好的方法,而是在寻找一种替代的、更好的方法;或验证;)。

(简化的)架构如下所示:

 EmailList  |  JobQue  |   Jobs
------------|----------|----------
   email    |   jobid  |    id
            |   email  | esubject
                       |  ebody

这个想法是,当一个新的工作被创建时,它将它添加到Jobs表中,并且每封需要发送的电子邮件都将添加到JobQue表中。
然后,实际发送电子邮件的 cron'd php 脚本将遍历 JobQue 表中的下 X 个项目,发送并删除它们。

这是一个好方法吗?它会在中等负载下弯曲吗? (1000-5000 封电子邮件,每天 1-5 个工作)?当然,如果有更多的电子邮件被添加然后发送,但会不会有其他问题(比如尝试一次将 1000 条记录添加到表中,即使我用一个 mysql 查询将它们全部插入)?

谢谢,
最大

【问题讨论】:

  • 我认为这在很大程度上取决于您系统的基础架构,尤其是它的硬件。您应该自己进行一些基准测试和压力测试,因为没有人可以模拟您的环境。关于您对封装在单个查询中的 1000 个插入的担忧:我认为这在大多数情况下都应该有效。

标签: php mysql database-design schema


【解决方案1】:

至少,您可能需要考虑一个比 5 分钟更短的 cron 时间。如果您将 X 限制为 30(避免被列入大量黑名单的关键数字),您的脚本将需要 16 小时 55 分钟才能完成 5000 封电子邮件。

【讨论】:

    【解决方案2】:

    我认为这是一种非常有效的方法。唯一的问题可能是,如果您想一次发送数千封电子邮件。它可能导致 php.ini 超时。 一次查询将数千条记录添加到mysql中还不错,这是imo最好的方法。 但我必须说,副本取决于查询本身。如果它太长(我的意思是一个太长的字符串),那么您可能会失去与服务器的连接。 但我认为您对这个架构根本不会有任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 2014-08-19
      • 2018-09-29
      • 2016-04-04
      • 2010-12-11
      相关资源
      最近更新 更多