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