Лучший способ динамически запланировать напоминание по электронной почте? Что-нибудь лучше, чем cron?

Приветствую, я разрабатываю веб-приложение. Одна его часть позволит пользователям запланировать отправку им электронной почты с «напоминанием» в определенное время дня. Как лучше всего этого добиться? По сути, все решения, которые я придумал, работают по шаблону «опроса», когда мне нужен шаблон «прерывания».

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

  1. Запускать cronjob каждую минуту. Сценарий, который запускает, проверяет базу данных, чтобы увидеть, есть ли какие-либо электронные письма для отправки, если есть, он отправляет их, иначе он снова засыпает. Недостатком этого является то, что каждую минуту возникают небольшие накладные расходы. Кроме того, это может быть не масштабируемая система, особенно когда количество пользователей становится настолько большим, что для отправки всех писем может потребоваться более минуты.

  2. То же, что и №1, но задание запускается только каждые 15 минут. Это немного более управляемо, но не идеально, так как ограничивает пользователей напоминаниями на 15-минутных отметках и по-прежнему вызывает небольшие накладные расходы, когда нет писем для отправки. Неплохо, но тоже не идеально.

  3. Имейте PHP exec () небольшой фрагмент кода, который динамически изменяет crontab или планирует выполнение задания в нижележащем Linux. Это даст мне гибкость и модель типа «прерывание», которую я так жажду, но откроет огромную дыру в безопасности, позволяя PHP выполнять код linux exec (). Итак, я собираюсь пойти дальше и исключить это.

Итак, что-нибудь лучше того, что я придумал? Возможно, способ запланировать электронную почту без использования cron? Мне очень любопытно узнать, что вы скажете по этому поводу :).

5
задан Keenahn Jung 8 June 2011 в 01:08
поделиться