Использование расписания Cron в Laravel для автоматизации задач
Работа Cron полезна для автоматизации нашей задачи в указанное время через равные промежутки времени. Laravel поставляется с функцией планирования задач, которая делает расписание cron очень простым. Раньше нам нужно было добавить отдельную запись для каждого задания cron. В Laravel нам просто нужно добавить одну команду, и она автоматически запускает все наши задания cron. Нет необходимости добавлять отдельную запись для каждой задачи. В этой статье мы изучаем использование расписания cron в Laravel, которое помогает нам автоматизировать наши задачи.
Зачем нужно запускать Cron?
Мы можем упомянуть несколько примеров, когда нам нужно запустить cron. Возможно, у вас есть интернет-магазин и вы хотите рассылать рекламные предложения своим пользователям. Или у вас есть членский веб-сайт, и вам нужно отправить пользователям электронное письмо с напоминанием о периоде продления подписки. Это два примера, в которых мы можем использовать cron. Что мы делаем, так это пишем программу, которая может выполнять эту задачу, и устанавливаем для нее cron. Ваш сервер будет искать время, указанное для cron, и, когда оно наступит, автоматически запустит программу. Нам не нужно смотреть на часы и запускать программу вручную.
Этот процесс облегчает нашу жизнь. Мы можем сосредоточиться на других важных делах и потратить время на мудрые дела.
Расписание Cron в Laravel
Для нашей статьи возьмем реальный пример. Допустим, у нас есть группа пользователей в нашей базе данных Laravel. Каждую полночь нам нужно отправлять электронное письмо всем пользователям с описанием нашего нового рекламного предложения. При этом наши пользователи получают уведомления о новых предложениях, а ваши продажи могут привлечь больше внимания.
Мы предполагаем, что вы сохранили всю информацию о своем пользователе в таблице «Пользователи». Мы получим электронные письма пользователей из этой таблицы и отправим им электронное письмо. Конечно, нам нужно написать код таким образом, чтобы он запускался каждую полночь.
Откройте app/Console/Kernel.php
файл в редакторе и добавьте в него модель пользователя и фасад Mail.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
У класса есть метод, в schedule
котором мы должны написать одно или несколько расписаний. Поскольку нам нужно отправить электронное письмо нашим пользователям, мы пишем код следующим образом.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser;
use Mail;
class Kernel extends ConsoleKernel
{
....
/**
* Define the application's command schedule.
*
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
$arr_users = User::all();
if(count($arr_users) > 0) {
foreach ($arr_users as $user) {
$name = $user->name;
$email = $user->email;
$data = array("name" => $name, "body" => "This is our new promotional offer");
Mail::send('emails.mail', $data, function($message) use ($name, $email) {
$message->to($email, $name)
->subject('New Offer Launched');
$message->from('[email protected]', 'Artisans Web');
});
}
}
})->daily();
// tou can add more schedules here
}
....
В приведенном выше коде мы берем пользователей из базы данных и отправляем им электронное письмо, используя метод send фасада Mail. Здесь нам нужно создать mail.blade.php
файлы в resources/views/emails
каталоге.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Поскольку наша задача – отправить электронное письмо в полночь, мы использовали этот daily()
метод. Laravel предоставляет различные варианты периодичности расписания, которые вы можете найти на странице документации.
Добавьте запись Cron на свой сервер
Наконец, чтобы установить это задание cron на сервере, вы должны добавить ниже запись cron на свой сервер.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Убедитесь, что вы правильно указали путь к вашему проекту. Этот Cron будет вызывать планировщик команд Laravel каждую минуту. Он автоматически выполняет команду schedule: run и оценивает ваши запланированные задачи и запускает задачи, которые должны быть выполнены.
Мы надеемся, что вы узнали об использовании расписания cron в Laravel и об автоматизации своих задач. Мы хотели бы услышать ваши мысли в разделе комментариев ниже.
Статьи по Теме
- Отправка электронной почты через SMTP-сервер Gmail в Laravel
- Как использовать события и слушатели Laravel в вашем приложении
- Как использовать Laravel Passport для аутентификации REST API