Прослушивание и запуск события в особую дату в Ларавеле

Я пытаюсь сделать сценарий уведомления для собственного использования. Вот то, чего я пытаюсь достичь. Когда пользователь регистрируется, я беру его адрес электронной почты и дату уведомления, которую он дает, и сохраняю их в таблице профиля. Теперь в указанную дату уведомления Приложение автоматически отправит им электронное письмо. Пока что моя идея сделать это легко — использовать «Событие»; Но, пожалуйста, не стесняйтесь поправлять меня, если я ошибаюсь.
Исходя из моей идеи, вот что я планирую сделать; для электронной почты я мог бы зарегистрировать класс в качестве данных для события.

Но мой первый вопрос: как я могу прослушать событие для этой даты уведомления?

И я хочу отправлять им уведомления каждый месяц, поэтому после отправки электронного письма я добавлю один месяц к старой дате уведомления, указанной пользователем. Добавление одного месяца будет простым, поскольку я использую «Углерод» на входе, сохраняя дату уведомления.

Итак, мой второй вопрос: после обновления даты уведомления, как я могу прослушать это событие еще раз?

И, наконец, если у меня есть 100 пользователей, и я хочу отправить одно и то же уведомление всем о дате их уведомления и конкретной дате, такой как в начале каждого месяца. Как я могу сделать это периодически?

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

1

Решение

Я чувствую, что то, что вы пытаетесь достичь, лучше сделать с помощью запланированной команды. Некоторые люди делают это, создавая рабочие места 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:] Отличное видео Джеффри Вей о том, как настроить и использовать диспетчер можно найти здесь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]