Как установить событие для каждой второй среды в Laravel

#laravel #command #scheduled-tasks

#laravel #команда #запланированные задачи

Вопрос:

В Laravel есть много опций для планирования команд artisan, но я пытался заставить его запускаться каждую вторую среду и не нашел правильной комбинации функций, у кого-нибудь из вас есть идея о том, как этого добиться, вы ее тестировали?

Спасибо!

Ответ №1:

Ну, cron можно указать для запуска в определенные дни недели. Используя планировщик Laravel, вы можете запускать его каждую среду следующим образом:

app/Console/Kernel.php

 protected function schedule(Schedule $schedule)
{
    $schedule->command('foo')
        ->wednesdays()
        ->when(function () {
            return Carbon::now()->weekOfYear % 2 == 0;
        });
}
 

редактировать: использование when функции, предложенной в комментариях, красивее. У него есть вся временная логика в 1 месте.

Комментарии:

1. Я попытаюсь объединить его с помощью функции when()