2012-09-28 84 views
1

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

然而,如果存在例如10.000用户,这样的cron作业会杀死我的服务器。可以做些什么来解决这个问题?

发送100封电子邮件后是否睡眠(1)? (当然,执行时间限制设置为1天)

+2

我会使用像[亚马逊SES](http://aws.amazon.com/ses/)的邮件服务来做大型工作 – adlawson

回答

3

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

注:

值得一提的是,邮件()函数是不适合大 卷在循环中的电子邮件。此功能可打开并关闭每个电子邮件的SMTP 套接字,但效率不高。

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

因此,只需使用Mail_Queue软件包......它将每封邮件都收集起来,然后简单地通过它们工作。

2

我已经做了系统几个月前发送电子邮件的项目,所以我做了以下内容:

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

用户
USER_EMAILS(有些用户有多个电子邮件地址)
email_campaign(这是我存储数据临时在发送的广告系列并结束我截断了所有的东西表)

当我开始发送活动我插入email_c行为我发送电子邮件的每个用户提供ampaign表。
这样,如果在广告系列完成前发生错误,我知道该继续哪里,并知道我向谁发送了电子邮件以及需要发送电子邮件的人。

实用性我能够在2小时内发送45.000封电子邮件。没有服务器过载。
我在每100封电子邮件中使用sleep(),就像你想要做的那样。
另外,我在凌晨2点发送活动,当时我的服务器负载最低。

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

相关问题