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

时间:2018-11-20 21:57:33

标签: php mysql apache email cron

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

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

我每分钟都会执行一次此脚本的定期任务,以确保在接下来的30分钟内向开会的人发送电子邮件提醒。但是我感觉这正在占用大量服务器资源,因为我必须每分钟运行一次。 “大”网站使用什么来检查和发送提醒?

必须有一种更好的方法。谢谢!

2 个答案:

答案 0 :(得分:1)

如果您有大量数据,则必须使用一种排队系统,例如 豆豆 https://beanstalkd.github.io/

https://media.readthedocs.org/pdf/php-beanstalk/latest/php-beanstalk.pdf

redis

https://redis.io/commands/rpoplpush

一旦有新的会议,就将新作业插入队列中,这会延迟您要发送提醒的时间,并让客户继续收听队列以准备提起工作

答案 1 :(得分:0)

最好的方法是像现在一样使用SQL查询创建一个PHP文件,比较表中的date_and_time并使用IF / ELSE与当前date_and_time进行比较。

但是在此之前,您应该从此表中选择所有date_and_time以与当前日期和时间+30分钟进行比较(因为据我了解,应该在30分钟之前发送)。

然后为true,执行此脚本

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

ELSE,什么也不做。

每分钟使用CRON执行此脚本。