【问题标题】:delay sending emails with php用php延迟发送电子邮件
【发布时间】:2012-07-11 02:03:50
【问题描述】:

所以我有一个代码可以检查表格上的记录并通过电子邮件发送给他们。 table1 字段是:id - 用户 ID - 电子邮件 - 主题 - txt 代码如下(简化):

$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(); 但我不知道如何实现延迟...... 有什么想法吗?我感谢任何意见

【问题讨论】:

  • 创建一个包含预定电子邮件的表格,创建随机发送时间并由专门的工作人员发送
  • 根据您计划发送的电子邮件量,考虑为您的消息队列使用不同的存储引擎。例如,如果您使用 Oracle 或 MySQL 存储站点数据,则可以考虑使用 MongoDB 或 Couch 作为消息队列。
  • @Travis:使用 oracle 或 mysql 进行电子邮件调度有什么问题?
  • 没有错。我提到它是因为在我目前的工作中,我们使用 Oracle 来处理事务数据,我们使用 MongoDB 来处理我们的电子邮件队列、报告数据、缓存和其他一些小事。如果对这些小事进行密集查询,则不会影响 Oracle 处理的更重要的事务性工作。

标签: php mysql email delayed-execution


【解决方案1】:

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

您可以使用 PHP rand() 函数和 mysql 来执行此操作(特别是这个 mysql 代码:DATE_ADD(NOW(), INTERVAL $randInteger HOUR)

每小时运行一个脚本,检查数据库是否应该发送一封电子邮件/发送哪封电子邮件,然后根据它返回的信息进行检查。

您可以使用 cron 执行此操作(如果您有提供 cpanel 的主机,则可以在 cpanel 中执行此操作)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 2018-01-17
    • 2018-02-26
    • 1970-01-01
    • 2012-06-26
    • 2010-10-08
    • 2011-07-01
    • 2016-09-28
    相关资源
    最近更新 更多