Выполните команду по времени в команде по времени


Я работаю с php-приложением, где мне нужно проверить базу данных пользователей, у которых сегодня день рождения. Это я делаю с помощью задания cron.

Теперь, когда я получаю пользователей с днем рождения, мне нужно отправить им SMS. С SMS связано индивидуальное время, которое определяет, когда должно быть отправлено SMS. Допустим, у Джона и Питера сегодня день рождения. Питер работает с 01-09, поэтому он должен получить SMS в 01, а Питер работает с 08-16, поэтому он должен получить свое SMS в 08.

Я был подумайте о динамическом создании такого же количества JBO cron, которое равно людям, у которых день рождения в определенную дату. Эти задания cron затем отправили бы SMS соответствующим людям на этот раз, и все.

Мой вопрос в том, есть ли более разумный способ сделать это? Во-вторых, если идея создания заданий cron достаточно хороша, есть ли способ удалить отдельные старые задания cron, чтобы я не засорял список заданий cron старыми заданиями, которые никогда не будут выполняться снова?

Спасибо в продвижение.

 3
Author: Rasmus, 2013-04-19

2 answers

Если вы беспокоитесь о создании слишком большого количества заданий cron (не уверены, сколько из них будет проблемой в вашей системе), то почему бы не создать только одно задание cron на уровне операционной системы? Затем вы можете звонить в свою программу каждые 10 минут или около того, и она может проверять, есть ли новые люди, которым нужно отправить SMS.

 2
Author: alexg, 2013-04-19 09:36:38

Если вы хотите отправлять сообщения каждому человеку в определенное время с помощью cronjobs, вам придется создать cronjob для каждого человека. Очень плохая идея в моих глазах, так как у вас может оказаться более 1000 закадычных друзей!

Вам было бы намного лучше с системой, которая запускает cronjob каждые 5 минут или около того (как бы часто вы ни хотели), и эта cronjob выполняет PHP-скрипт, чтобы определить, есть ли какие-либо сообщения для отправки в это время или между настоящим моментом и последним закадычная работа.

Хотя это может означать, что ваши пользователи могут получить свое сообщение с опозданием до 5 минут, это маловероятно, потому что никто из моих знакомых не начинает работу в 8:02, и, следовательно, если cronjob находится в 8:00, 8:05, 8:10 и т.д., вы почти всегда получите сообщение, отправленное точно в срок!

 3
Author: Ben Carey, 2013-04-19 09:42:36