WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Использование расписания Cron в Laravel для автоматизации задач

325

Работа 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 и об автоматизации своих задач. Мы хотели бы услышать ваши мысли в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее