2012-07-11 174 views
1

所以我有一个代码,检查表中的记录,并通过电子邮件发送。 table1中的字段有:ID - 用户ID - 电子邮件 - 主题 - TXT 代码如下(简化):延迟发送电子邮件与PHP

$sql = "SELECT * FROM table1 where userid='$userid'"; 
$results = mysql_query($sql); 
while ($row = mysql_fetch_array($results)) 
{ 
mail($row['email'],$row['subject'],$row['txt']); 
} 

这将发送的所有电子邮件一次。 我希望它能够发送随机延迟的电子邮件。例如:发送第一封电子邮件,等待1小时,发送第二封,等待2小时,发送电子邮件3 等5小时,发送电子邮件5然后等待2小时... 我正在考虑使用功能rand(); 但我有不知道如何实现延迟... 任何想法?我感谢任何输入

+1

与定期发送的电子邮件创建一个表,创建随机发送时间,并通过专用的辅助 – zerkms 2012-07-11 02:05:49

+0

取决于量给他们(如果有提供的cPanel主机你有这样的的cPanel)您计划发送的电子邮件,请考虑为您的邮件队列使用不同的存储引擎。例如,如果您使用Oracle或MySQL作为您的站点数据,您可以考虑使用MongoDB或Couch作为消息队列。 – Travis 2012-07-11 02:08:22

+0

@Travis为什么?... – Petah 2012-07-11 02:12:40

回答

3

生成随机数字,将它们以小时格式添加到时间戳,并将它们保存在数据库中。

您可以使用PHP rand()功能和MySQL(特别是这个MySQL代码:DATE_ADD(NOW(), INTERVAL $randInteger HOUR))做到这一点

运行一个脚本,与数据库每小时检查是否存在应发送的电子邮件/其电子邮件发送,然后根据返回的信息进行确认。

为此,您可以使用cron的