我有大量用户同意收听每日简报。正在自动生成简报的内容,因此唯一要做的就是设置一个发送电子邮件的cron作业。
但是,如果有例如10.000用户,这样的cron作业会杀死我的服务器。可以做些什么来解决这个问题?
发送100封电子邮件后是否睡眠(1)? (当然,将执行时间限制设为1天)
答案 0 :(得分:4)
查看http://php.net/manual/en/function.mail.php
注意:
值得注意的是mail()函数不适合更大的 循环中的电子邮件量。此功能可打开和关闭SMTP 每个电子邮件的套接字,效率不高。
要发送大量电子邮件,请参阅»PEAR :: Mail和» PEAR :: Mail_Queue包。
因此,只需使用Mail_Queue包...它会接收每封邮件,然后直接通过它们。
答案 1 :(得分:2)
几个月前我已经建立了一个系统来发送项目电子邮件,所以我做了以下几点:
在数据库中,我有3个表:
用户
user_emails(一些用户有多封电子邮件)
email_campaign(这是我在发送广告系列时暂时存储数据的表格,在结束时我会截断其中的所有内容)
当我开始发送广告系列时,我会在email_campaign表格中为每个完成发送电子邮件的用户插入行。
这样,如果在广告系列完成之前发生错误,我知道在哪里继续,并知道我向谁发送了电子邮件以及谁需要发送电子邮件。
实践我能够在2小时内发送45.000封电子邮件。没有服务器过载 我每100封电子邮件就像你想做的那样使用sleep() 另外,当我的服务器负载最低时,我会在凌晨2点发送广告系列。
您还可以将电子邮件服务器配置为每小时发送一定数量的电子邮件 这会减慢发送速度,但会减少服务器负载。