【发布时间】:2015-11-19 01:06:39
【问题描述】:
嗯,基本上我需要在保存在数据库中的特定时间发送电子邮件,并且电子邮件以不同的时间戳注册,这里唯一的问题是我有一个每小时执行一次的 cron,这里的问题如何在 cron 执行时安排在不同时间发送电子邮件?
【问题讨论】:
-
我是否理解您的问题意味着 cron 在
10:00, 11:00, 12:00, ...触发并且您希望电子邮件发送到10:13, 10:55, 11:44?
嗯,基本上我需要在保存在数据库中的特定时间发送电子邮件,并且电子邮件以不同的时间戳注册,这里唯一的问题是我有一个每小时执行一次的 cron,这里的问题如何在 cron 执行时安排在不同时间发送电子邮件?
【问题讨论】:
10:00, 11:00, 12:00, ... 触发并且您希望电子邮件发送到 10:13, 10:55, 11:44 ?
如果您使用的是平面时间戳,则只需检查 sendDate 是否“小于或等于”(lte)当前时间。 (如果不使用strtotime 将您的日期字符串转换为时间戳)
if($sendAt <= time()) {
//send mail
}
【讨论】:
通常任务运行器 cron 作业的运行频率远高于每小时一次。尝试将其设置为每 5 分钟一次。该 cron 运行一个作业,检查 db 是否有任何未发送的电子邮件与从现在到最后一个 cron 作业(现在 - 5 分钟)之间的时间相匹配并发送它们。您希望的时间越具体,您需要越频繁地运行您的工作。
【讨论】: