【问题标题】:Best way to send huge amount of e-mails in PHP用 PHP 发送大量电子邮件的最佳方式
【发布时间】:2012-09-20 02:55:06
【问题描述】:

我有大量用户同意接收每日通讯。时事通讯的内容是自动生成的,所以唯一要做的就是设置一个可以发送电子邮件的 cron 作业。

但是,如果有例如10.000 个用户,这样的 cron 作业会杀死我的服务器。有什么办法可以解决这个问题?

发送 100 封邮件后 sleep(1) 是否足够? (当然还有将执行时间限制设置为 1 天)

【问题讨论】:

  • 我会使用Amazon SES 之类的邮件服务来完成大型工作

标签: php email newsletter


【解决方案1】:

看看http://php.net/manual/en/function.mail.php

注意:

值得注意的是mail()函数不适合较大的 循环中的大量电子邮件。这个函数打开和关闭一个 SMTP 每封邮件的socket,效率不高。

对于发送大量电子邮件,请参阅 » PEAR::Mail 和 » PEAR::Mail_Queue 包。

所以只需使用 Mail_Queue 包...它接收每封邮件,然后简单地处理它们。

【讨论】:

    【解决方案2】:

    几个月前我已经为项目制作了一个发送电子邮件的系统,所以我做了以下工作:

    在数据库中,我有 3 个表:

    用户
    user_emails(一些用户有多个电子邮件)
    email_campaign(这是我在发送活动时临时存储数据并在完成时截断其中的所有内容的表)

    当我开始发送活动时,我会在 email_campaign 表中为我完成发送电子邮件的每个用户插入行。
    这样,如果在活动结束前发生错误,我就知道从哪里继续,并且知道我向谁发送了电子邮件以及需要向谁发送电子邮件。

    实际上,我能够在 2 小时内发送 45.000 封电子邮件。没有服务器过载。
    我会在每 100 封电子邮件中使用 sleep(),就像你想做的那样。
    我还在凌晨 2 点发送广告系列,当时我的服务器负载最低。

    您还可以将电子邮件服务器配置为每小时发送有限数量的电子邮件。
    这会减慢发送速度,但会减少服务器负载。

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2010-09-08
      • 2014-10-30
      • 2013-04-28
      • 2011-10-02
      • 2011-07-02
      • 2010-11-10
      • 2011-06-18
      • 2011-09-07
      相关资源
      最近更新 更多