gpt4 book ai didi

php - 如何在 X 时间后仅发送一次电子邮件

转载 作者:行者123 更新时间:2023-11-29 15:56:26 26 4
gpt4 key购买 nike

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

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

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

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

谢谢

最佳答案

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

应用程序代码

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();
}

如果您选择使用应用程序代码版本,我强烈建议您使用像 Carbon ( https://carbon.nesbot.com/ ) 这样的库来帮助您进行日期/时间算术。即使是像这样简单的计算,它也确实是一个救星。

数据库版本

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();
}

您可以通过直接在查询中进行比较来进一步压缩数据库版本,但我会将其留给您。

关于php - 如何在 X 时间后仅发送一次电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56430429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com