每分钟检查一次数据库,然后发送通知

l0oc07j2  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(360)

因此,我有一个.php脚本,它检查数据库中的日期/时间,如果该日期和时间在接下来的30分钟内,那么它将向他们发送电子邮件通知。

$stmt = $dbh->prepare(“SELECT user_id FROM meetings WHERE date_and_time = :date_and_time”);
...
sendEmailReminder($userId);

我每分钟都在运行这个脚本的cron作业,以确保在接下来的30分钟内为有会议的人发送电子邮件提醒。但是我觉得这会占用大量的服务器资源,因为我必须每分钟运行一次。“大”网站用什么来检查和发送提醒?
一定有更好的办法。谢谢!

kyvafyod

kyvafyod1#

最好的方法是用sql查询创建一个php文件,就像现在一样,比较表中的日期和时间,并使用if/else与当前日期和时间进行比较。
但在此之前,您应该从该表中选择所有日期和时间,以与当前日期和时间+30分钟进行比较(因为如果我理解,它应该在30分钟之前发送)。
如果为true,则执行此脚本 $stmt = $dbh->prepare(“SELECT user_id FROM meetings WHERE date_and_time = :date_and_time”); 否则,什么也不做。
用cron每分钟执行这个脚本。

44u64gxh

44u64gxh2#

如果你有大量的数据,你必须使用像beanst这样的排队系统alkdhttps://beanstalkd.github.io/
https://media.readthedocs.org/pdf/php-beanstalk/latest/php-beanstalk.pdf
redis公司
https://redis.io/commands/rpoplpush
一旦您获得了一个新会议,请在队列中插入一个新的作业,并延迟到您要发送提醒的时间,并让消费者收听队列中准备挑选的作业

相关问题