Проверяйте базу данных каждую минуту, а затем отправляйте уведомления - PullRequest
0 голосов
/ 21 ноября 2018

Итак, у меня есть скрипт .php, где он проверяет базу данных на дату / время, и если эта дата и время находятся в течение следующих 30 минут, он отправит им уведомление по электронной почте.

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

Я запускаю cron-задачу этого скрипта каждую минуту, чтобы удостовериться, что напоминания по электронной почте рассылаются людям, которые проводят собрание в течение следующих 30 минут.Но я чувствую, что это использует много серверных ресурсов, потому что я должен запускать это каждую минуту.Что «большие» сайты используют для проверки и отправки напоминаний?

Должен быть лучший способ сделать это.Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Лучшим способом было бы создать файл PHP с вашим SQL-запросом, похожим на тот, который у вас есть сейчас, сравнить date_and_time, который у вас есть в таблице, и сравнить с текущим date_and_time, используя IF / ELSE.

Но прежде выВЫБЕРИТЕ ВСЕМ date_and_time из этой таблицы, чтобы сравнить с текущей датой и временем +30 минут (потому что, если я понимаю, его следует отправить за 30 минут до этого).

Затем, если true, выполнить этот скрипт

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

Иначе, ничего не делать.

Выполнять этот скрипт каждую минуту с CRON.

0 голосов
/ 21 ноября 2018

если у вас большой объем данных, вы должны использовать одну из систем очередей, такую ​​как beanstalkd https://beanstalkd.github.io/

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

redis

https://redis.io/commands/rpoplpush

после получения нового собрания вставьте новое задание в очередь с задержкой до времени, когда вы хотите отправить напоминание, и сохранитепотребитель слушает очередь за готовым заданием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...