Всем привет! Сегодня я собираюсь познакомить вас с процессом создания запланированной задачи в Laravel. Мы возьмем пример отправки пользователям ежедневного маркетингового электронного письма.
Во-первых, давайте создадим новый класс Mailable, используя следующую команду Artisan:
php artisan make:mail DailyMarketingEmail --view
Эта команда создает новый класс Mailable в каталоге App/Mail вместе с соответствующим файлом представления daily-marketing-email.blade.php внутри каталога resources/views/mail/. Вы можете настроить содержимое электронного письма в этом файле просмотра.
Далее мы создадим команду Artisan, которая будет обрабатывать отправку нашего сообщения DailyMarketingEmail. Выполните следующую команду:
php artisan make:command SendDailyMarketingEmail
Эта команда создаст новый класс команд в каталоге app/Console/Commands.
После создания команды вы увидите два ключевых свойства в сгенерированном классе:
protected $signature: определяет имя и подпись вашей команды Artisan.
protected $description: содержит описание вашей команды.
В методе handle в этом классе вы определяете логику вашей команды.
После того, как все настроено, вы можете просмотреть все свои команды Artisan, выполнив:
php ремесленник
Вы должны увидеть свою команду в списке:
Теперь давайте определим логику метода handle для отправки маркетинговых писем:
each(function ($user) { Mail::to($user->email)->send(new DailyMarketingEmail); }); } }
В методе handle мы извлекаем всех пользователей из базы данных и отправляем каждому DailyMarketingEmail.
Вы можете вручную проверить свою команду, выполнив:
php artisan app:send-daily-marketing-emails
Рассмотрите возможность использования таких инструментов, как Mailtrap или MailHog, для перехвата и просмотра отправленных электронных писем во время тестирования.
Наконец, чтобы автоматизировать ежедневную отправку этого электронного письма, нам нужно запланировать команду в методе Schedule файла Kernel.php, расположенного в каталоге app/Console/:
command('app:send-daily-marketing-emails')->dailyAt('08:30'); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
Здесь мы используем метод dailyAt('08:30') для планирования выполнения команды каждый день в 08:30. Вы можете настроить время по мере необходимости.
Постановка электронных писем в очередь: для большого количества пользователей рекомендуется ставить электронные письма в очередь, а не отправлять их все сразу. Это можно сделать, реализовав интерфейс MustQueue в классе Mailable.
Аспекты производительности: для больших баз пользователей рассмотрите возможность оптимизации запросов к базе данных и процесса отправки электронной почты, чтобы обеспечить эффективную производительность.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3