Контейнер планирования Laravel

avatar
adrienc921
8 апреля 2018 в 05:16
52
1
1

Я реализовал запланированные задачи в соответствии с документацией Laravel: https://laravel.com/docs/5.5/scheduling

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

Я использую эту функцию для планирования и вызова определенных задач в ядре консоли:

protected function schedule(Schedule $schedule)
{
        $schedule->call(function () {
            echo 'imagine this one will fail';
        })->daily();

        $schedule->call(function () {
            echo 'this one always succeed';
        })->daily();
} 

Я защитил от сбоев на уровне функции, но мне интересно, есть ли другой уровень сдерживания, который я мог бы использовать на уровне ядра консоли?

Спасибо!

Адриен

Источник

Ответы (1)

avatar
Brian Lee
8 апреля 2018 в 05:22
0

Если вас не беспокоят исключения и вы просто хотите продолжить обработку запланированных задач, оберните содержимое каждого $schedule->call во вспомогательный метод rescue. Он по-прежнему будет сообщать об исключениях, но позволит продолжить обработку:

.
protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
        rescue(function () {
            echo 'imagine this one will fail';
        });
    })->daily();

    $schedule->call(function () {
        rescue(function () {
            echo 'this one always succeed';
        });
    })->daily();
} 

Rescue также принимает второй параметр для выполнения действия, если первый вызовет исключение:

$schedule->call(function () {
    rescue(function () {
        echo 'imagine this one will fail';
    }, function () {
        event(new ScheduledTaskFailed('some task blah blah...'));
    });
})->daily();
adrienc921
8 апреля 2018 в 07:39
0

Спасибо большое, это была идея!