Я пытаюсь сделать сценарий уведомления для собственного использования. Вот то, чего я пытаюсь достичь. Когда пользователь регистрируется, я беру его адрес электронной почты и дату уведомления, которую он дает, и сохраняю их в таблице профиля. Теперь в указанную дату уведомления Приложение автоматически отправит им электронное письмо. Пока что моя идея сделать это легко — использовать «Событие»; Но, пожалуйста, не стесняйтесь поправлять меня, если я ошибаюсь.
Исходя из моей идеи, вот что я планирую сделать; для электронной почты я мог бы зарегистрировать класс в качестве данных для события.
Но мой первый вопрос: как я могу прослушать событие для этой даты уведомления?
И я хочу отправлять им уведомления каждый месяц, поэтому после отправки электронного письма я добавлю один месяц к старой дате уведомления, указанной пользователем. Добавление одного месяца будет простым, поскольку я использую «Углерод» на входе, сохраняя дату уведомления.
Итак, мой второй вопрос: после обновления даты уведомления, как я могу прослушать это событие еще раз?
И, наконец, если у меня есть 100 пользователей, и я хочу отправить одно и то же уведомление всем о дате их уведомления и конкретной дате, такой как в начале каждого месяца. Как я могу сделать это периодически?
Пожалуйста, не стесняйтесь давать любые предложения, которые легко реализовать, вместо того, что я думаю.
Я чувствую, что то, что вы пытаетесь достичь, лучше сделать с помощью запланированной команды. Некоторые люди делают это, создавая рабочие места cron это вызовет определенную функцию, когда запланировано.
В Laravel 4 (я предполагаю, что это то, что вы используете), есть замечательный пакет от indatus, который называется диспетчер. Я не буду вдаваться в то, как его настроить, так как у них есть отличная документация, но вы можете создавать запланированные задания, где будете проверять каждые x дней / минут и т. Д. Это также более читабельно.
Диспетчер делает его очень читабельным по сравнению с заданиями cron, например:
« `использовать Indatus \ Dispatcher \ Scheduling \ ScheduledCommand;
использовать Indatus \ Dispatcher \ Scheduling \ Schedulable;
использовать Indatus \ Dispatcher \ Drivers \ DateTime \ Scheduler;
класс MyCommand расширяет ScheduledCommand {
//your command name, description etc.
public function schedule(Schedulable $scheduler)
{
//every day at 4:17am
return $scheduler
->daily()
->hours(4)
->minutes(17);
}
}
« `
Эта функциональность была включены в Laravel 5 так что вам не нужно устанавливать никаких дополнительных пакетов, если вы используете эту версию.
Надеюсь, поможет.
[EDIT:] Отличное видео Джеффри Вей о том, как настроить и использовать диспетчер можно найти здесь.Других решений пока нет …