从程序上讲,在避免PHP超时的同时,有什么简单直接的方法可以间隔发送批量电子邮件?这是为了联系一个网站的几千名成员。
p.S:考虑将发送的邮件分成N个电子邮件地址,并让脚本以某种方式自称。
最简单的方法是在每发送x封电子邮件后睡几秒钟:
$count = 0
while (foo) {
send_email();
if ($count++ == 100) {
sleep(10);//sleep for 10 seconds
$count = 0;
}
}
如果您发送给所有订阅该网站的人,您可以执行以下操作:
- 添加列(如果还没有存在)在用户表上类似于"email_sent",默认为1(表示是)
- 当您执行电子邮件发送时触发器,更新所有用户记录将"email_sent"标志设置为0(反对)
- 设置一个cron作业,该作业执行PHP脚本(甚至访问您的网站使用指定页面的服务器执行脚本)选择具有"email_sent"设置为0,发送它们电子邮件,并更新"email_sent"列为1,表示每个成功
如果您正在处理多个邮件,则需要跨另一个维护user:mailout关系和"email_sent"状态的表加入。
您可以随时尝试sleep命令或手动交错cronjobs,但更好的选择可能是查看为您处理详细信息的已建立库:PEAR Mail_Queue
Mail_Queue类将邮件放入临时容器,等待进料MTA(邮件运输代理),以及稍后发送(例如每隔几分钟的邮件数量)crontab或其他方式。
如果你可以选择的话,也有很多公司会以一定的价格为你处理这一切。