首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在X时间之后只发送一次电子邮件

问如何在X时间之后只发送一次电子邮件
EN

Stack Overflow用户
提问于 2019-06-03 15:31:08
回答 1查看 59关注 0票数 0

我正在做一个PHP警报通知,如果温度设定点已经达到,它将发送一封电子邮件。

我有CRONJOB,每1分钟运行一次,运行一个PHP脚本来验证温度,如果温度达到某个点,它会发送电子邮件通知给我。

问题是,由于CRONJOB,温度超过设定点时,它每分钟都会给我发一封电子邮件通知。我希望它只给我发一封电子邮件。一分钟都不发。

我使用MYSQL来存储报警信息。如果我需要一些,如何在mysql中设置时间戳,并让脚本验证时间,并在x时间内发送它。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-03 15:56:02

您可以在应用程序代码中或直接在DB中进行计算。这是一些伪代码。

应用程序代码

代码语言:javascript
复制
CONST NOTIFICATION_DURATION = '30 minutes';

$mostRecentNotification = query('SELECT MAX(created_at) FROM notifications');

// Notice we're doing the calculation in our application code.
$nextAvailableNotification = $mostRecentNotification + NOTIFICATION_DURATION;

if (current_time >= $nextAvailableNotification) {
    send_notification();
}

如果您选择使用应用程序代码版本,我强烈建议使用像date (https://carbon.nesbot.com/)这样的库来帮助您完成日期/时间算法。即使像这样的简单计算,它也确实是一种拯救生命的方法。

数据库版本

代码语言:javascript
复制
CONST NOTIFICATION_DURATION = '30 minutes';

// Notice we're doing our calculation in our database
$nextAvailableNotification = query('SELECT MAX(created_at) + INTERVAL ' . NOTIFICATION_DURATION . ' FROM notifications');

if (current_time >= $nextAvailableNotification) {
    send_notification();
}

您可以在查询中直接进行比较,从而进一步压缩数据库版本,但这将由您决定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56430429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档