【问题标题】:Autoresponder: Send in 1 Minute After Subscription SQL Statement自动回复:订阅 SQL 语句后 1 分钟内发送
【发布时间】:2015-09-03 06:16:01
【问题描述】:

我创建了自动回复系统,用于订阅具有动态时间传导的感谢消息。

常规设置具有时间功能,例如 1 分钟后、1 天、1 周等。当客人在我的列表中订阅时,应发送基于 cron 的自动回复,并带有选定的时间条件。但是我的 sql 查询不能正常工作。我尝试了很多查询,但现在没有成功。这是我的构建;

订阅者表

ID   mail              add_date
1    mail1@gmail.com   2015-06-16 22:11:20
2    mail2@gmail.com   2015-06-16 22:19:30

当前时间: 2015-06-16 22:20:30

SQL 查询:

SELECT 
        S.* 
FROM 
        subscribers AS S
        LEFT JOIN tasks AS T ON (T.CID=2 AND S.subscriber_mail=T.subscriber_mail)
        LEFT JOIN unsubscribes AS U ON (U.CID=2 AND S.subscriber_mail=U.subscriber_mail)
WHERE
        (T.subscriber_mail IS NULL)
        AND (U.subscriber_mail IS NULL)


 AND (S.add_date > date_sub('2015-06-16 22:20:30', interval 1 MINUTE)) LIMIT 5000

发送成功,但是如果我为“1天后”创建新条件它不能正常工作,它会在第一次查询后发送相同的消息,它不会等待1天。

简而言之;

我想在订阅后、1 分钟、1 天、1 个月后发送 3 封邮件。

谢谢!

【问题讨论】:

  • 考虑换个方向:用 date_add(CURRDATE(),INTERVAL 1 DAY) 等在一个表中创建 3 封邮件,然后搜索未发送的邮件
  • @v.eigler 没有理由像那样膨胀数据库
  • @cmorrissey 原因可能是有人想知道邮件是否已发送。
  • @v.eigler 如果是这种情况,只需将 3 个布尔或日期列添加到表中以标记或设置发送时间
  • @cmorrissey 好吧,我只是说“想想”。但是,如果您有更好的解决方案,请回答问题;)

标签: php mysql newsletter auto-responder


【解决方案1】:

也许这能解决你的问题:

SELECT * FROM 
    subscribers
WHERE
    add_date >= DATE_SUB(CURDATE(),INTERVAL 1 DAY)

如果您使用 NOW(),您将始终在查询中获得不需要的分钟/秒(如果您的差异 >= 一天)。

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2018-05-23
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多