如何组织数据以向用户发送许多电子邮件?

问题描述

| 这更多是为了寻求建议/最佳实践。我们的网站拥有许多用户(> 200,000),我们需要向所有用户发送有关他们所在地区发生的事件的电子邮件。交错增加工作的最佳方法是什么? 注意事项: 我们将所有内容存储在MysqL数据库中 电子邮件在基于队列的系统上发送,独立的工作人员抓取任务并将其发送出去。 我们收集可用于分组的用户名,加入日期 发送电子邮件不是问题,问题在于添加作业。如果我们突然尝试一次添加这么多工作,我担心会影响性能。     

解决方法

        我希望您的要求就像向新闻组和订户发送新闻信一样。 您已经有小组并且可以实施吗? 这将有助于过滤并避免过滤整个200000用户。 发送基于组的电子邮件将减少数据库负载,我希望!!。 处于db处于活动状态和非活动状态的用户。 解决cron工作是解决方案。但间隔是根据作业可能影响您的服务器的负载而定。 因此,如果数据库设计和作业间隔性能良好,则更好     ,        我假设您的队列是数据库中的一个表,并且您担心的是向表中添加数千条记录会对其造成重大影响,因为每次都会重新建立索引? 如果在单个进程(例如,单个http请求或单个cronjob脚本)中添加许多条目,则可以在插入之前启动事务,并在完成后提交。对于事务中的所有插入,索引将仅更新一次。 如果这是更普遍的问题,则可能要考虑使用消息队列而不是数据库表。 还是我完全离开?     ,        每5分钟设置一次Cron作业。检查是否有要发送的电子邮件。如果存在,并且尚未将其设置为“进行中”,请选择第一个并将其设置为进行中。选择ID <
n
的第一批用户并将其发送给他们。跟踪该最后一个ID,并重复直到到达用户列表的末尾。