Laravel планировщик задач (Назначенные задания кинетической энергии)

Laravel команда планировщик позволяет определить четкие и гладкие в команде Laravel. И вы можете просто использовать хроны на сервере при использовании планировщика. Метод планирования определяется в расписании приложения \ Console \ kernel.php файл.

Начало планирования

Только нужно использовать элементы хрон следующего графика добавлен на сервер.

* * * * * PHP / ваш-проект / ремесленник schduel: запуск >> / DEV / нуль 2> & 1

Выше хроны будут вызываться один раз в командном планировщике минут Laravel. График выполнения: Когда команда запуска, Laravel бежит запланированные задачи на основе расписания.

Определение расписания

Вы можете определить все запланированные задачи приложение метод \ график консоли \ класс ядра.

Пример: Мы планируем вызвать закрытие в полночь. В Closure выполнения запросов к базе данных, чтобы очистить таблицу

<? PHP

 

Пространство имен App \ консоль;

 

использовать DB;

использовать Осветите \ Console \ Планирование \ Расписание;

использовать Осветите \ Foundation \ Console \ Kernel как ConsoleKernel;

 

Класс Kernel расширяет ConsoleKernel

{

    / **

     * Artisan команда предоставляется приложением

     *

     * @Var массив

     * /

    защищенные $ команд = [

        \ App \ Console \ Команды \ Inspire :: класс,

    ];

 

    / **

     * Определить график команды приложения

     *

     * @Param \ Осветите \ Console \ Планирование \ Расписание $ Расписание

     * @Return недействительным

     * /

    защищенная функция расписания (Schedule $ расписание)

    {

        $ Schedule-> вызов (функция () {

            DB :: таблица ( 'recent_users') -> Удалить ();

        }) -> ежедневно ();

    }

}

Расписание Artisan команды

В дополнение к consure планирования, вы можете вызвать Artisan команды и команды операционной системы. Например, вы можете общаться команды с названием команды или имя методов класса запланировать Artisan команду.

$ Schedule-> команда ( "электронная почта: отправить --force") -> ежедневно ();

$ Chedule-> команда (EmailsCommand :: класс, [ '- сила']) -> ежедневно ();

Задачи планирования очередей

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

$ Schedule-> Работа (новый Hertbeat) -> everyFIveMinuites ();

график командной оболочки

Exec может быть использован для выполнения команд в операционную систему

$ schedule-> Exec ( 'узел /home/forge/script.js') -> ежедневно ();

Настройка частоты планирования

Вы можете назначить различные планирования ваших задач

метод описание
-> хрон ( "* * * * *") Выполнение этой задачи по расписанию пользовательских хрон
-> everyMinute () Выполнить задачу каждую минуту
-> everyFiveMinutes () Каждые пять минут, чтобы выполнить задачу
-> everyTenMinutes () Каждые десять минут, чтобы выполнить задачу
-> everyFiftenMinutes () Каждые 15 минут, чтобы выполнить задачу
-> everyThirtyMinutes () Каждые полчаса, чтобы выполнить задачу
-> ежечасно () Выполните задание один раз в час
-> hourlyAt (17) 17 минут, чтобы выполнить задачу один раз в час
-> ежедневно () Каждый день в полночь, чтобы выполнить задачу
-> dailyAt ('13: 00' ) 13:00 каждый день, чтобы выполнить задачу
-> twiceDaily (1,13) 1:00 и 13:00 каждый выполнить задачу
-> в неделю () Выполните задание один раз в неделю
-> ежемесячно () Один раз в месяц миссии
-> monthlyOn (4, '13: 00' ) День 13:00 выполнить задание один раз в месяц
-> ежеквартально () Исполняется один раз в квартал
-> в год () Выполнить один раз в год
-> часовой пояс ( 'Китай / Пекин') Установка часового пояса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Эти методы могут быть объединены с другими ограничениями, с тем, чтобы создать более точное расписание. Например, план еженедельный график понедельник

$ Schedule-> вызов (функция () {

}) -> в неделю () -> понедельники () -> в ('13: 00 «) // запустить еженедельный 13:00

$ Schedule-> commad ( 'дурак') -> дни недели ()

                -> ежечасно ()

                -> часовой пояс ( 'Amarica / Чикаго')

                -> между ( '8:00', '17: 00' ); // с понедельника по пятницу с 8:00 до 17:00 выполняется один раз в час

Следующие дополнительные ограничения, когда условия столбцов

 
метод описание
-> дни недели () Предельное задание по рабочим дням
-> воскресенья () Предельная задача в воскресенье
-> понедельники () Предельная задача в понедельник
-> вторники () Предельная задача во вторник
-> () Среды Предельная задача в среду
-> четверги () Предельная задача в четверг
-> пятниц () Предельная задача в пятницу
-> () суббот Предельная задача в субботу
-> между ($ старт, $ конец) Пределы от начала до конца задачи в сроках
-> когда (закрытие) Функция закрытия возвращает задачу ограничить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ограничение по времени

между методами могут быть использованы для ограничения день выполнения задания в течение определенного периода времени

$ Schedule-> Команда (напоминает: отправить '')

                 -> ежечасно ()

                 -> между ( '7:00', '20:00');

Точно так же, unlessbetween () метод может быть использован, чтобы исключить задачу в течение определенного периода времени

$ Schedule-> Команда ( 'напоминает: отправить')

                -> ежечасно ()

               -> unsetbetween ('23: 00' , '4:00');

Колпачки пределы испытаний

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

$ Schedule-> команда ( 'электронная почта: отправить') -> ежедневно () -> когда (функция () {

        возвращает истину;

});

когда процесс обратного, когда пропуска могут быть рассмотрены. Если пропустить возвращает значение ИСТИНА, то задача не выполняется.

$ Schedule-> команда ( 'электронная почта: отправить') -> ежедневно () -> пропуска (функция () {

      возвращает истину;

});

Когда прикованные вызовы больше, когда, планирование команды будет выполняться только тогда, когда все условия возврата

Избегайте дублирования задач

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

$ Schedule-> Команда ( 'Eamil: отправить') -> withoutOverlapping ();

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

Режим обслуживания

Когда Laravel в режиме технического обслуживания, планирование Laravel не вступит в силу. Тем не менее, если вы хотите обеспечить задачи в режиме технического обслуживания можно использовать evenInmentenanceMode ()

$ Schedule-> Команда ( 'E-mail: отправить') -> evenInmentenanceMode ();

Выход задачи

Laravel планировщик предоставляет несколько удобный вывод , сгенерированный с помощью планирования задач. Во - первых, но с использованием  sendOutputTo  метод для отправки вывода в отдельный файл для последующего осмотра

$ Schedule-> Команда ( 'E-mail: отправить') -> ежедневно () -> sendOutputTo ($ Filepath);

Если вы хотите вывести прикрепленные к указанному файлу, вы можете использовать метод appendOutputTo

$ Schedule-> Команда ( 'E-mail: отправить') -> appendOutputTo ($ Filepath);

Используйте метод emailOutputTo, выход может быть отправлен на указанный вами адрес электронной почты, по электронной почте. Перед отправкой вывода задачи, вам нужно настроить Laravel службы электронной почты

$ Schedule-> Команда ( 'E-mail: отправить') -> sendOutputTo ($ Filepath) -> emailOutputTO ('[email protected] ');

Примечание: только команда, когда emailOutputTo SendOutputTo appendOutputTo путь, не поддерживает использование вызова метода

крючок задач

Методы до, и после, чтобы указать команду выполняться до или после запланированной задачи

$ Schedule-> команда ( 'электронная почта: отправить')

                -> ежедневно ()

                -> раньше (функция () {

                  Перед началом задачи //

                })

                -> после того, как (функция () {

                   После завершения задачи //

               })

URL Ping

Используйте pingBefore и thenPing метод, вы можете выполнять задачи до и после автоматического пинга указанного URL. Этот метод уведомления внешних услуг (например Laravel Envoyer) запланированные задачи начали или завершены для выполнения полезной.

$ Schedule-> команда ( 'электронная почта: отправить') -> ежедневно ()

                 -> pingbefore ($ URL)

                 -> thenPing ($ URL)

Независимо от pingBefore ($ URL) или thenPing ($ URL), должен жрать Http поддержку библиотеки. Вы можете использовать композитор, чтобы добавить библиотеку жрать в свой проект

композитор требует guzzlehttp / жрать

Источник: https://learnku.com/docs/laravel/5.5/scheduling/1325

рекомендация

отwww.cnblogs.com/shangfz/p/11239899.html