перезапустить задания в планировщике laravel

Я хочу перезапустить задания в планировщике laravel в случае сбоя, предположим следующее:
Kernal.php

protected function schedule(Schedule $schedule)
{
$this->generateData($schedule);

}

protected function generateData($schedule){

$schedule->command('My Command')
->monthly()
->after(function ($schedule){
$command = DB::table('commands')
->where("name","My Command")
->orderBy('id', 'desc')
->first();
if(!$command->succeeded){
echo "task not finished";
$this->generateData($schedule);
}
else{
echo "task finished";
return;
}
});
}

эта команда иногда дает сбой, после того, как функция проверяет, сбой команды или нет, я пытаюсь снова выполнить ее, но это не сработало, и я получил следующую ошибку:
[ErrorException] Отсутствует аргумент 1 для App \ Console \ Kernel :: App \ Console {closure} ()

какие-либо предложения ?

0

Решение

Вы неправильно устанавливаете $ schedule в анонимной функции, используйте оператор use следующим образом:

protected function generateData($schedule){

$schedule->command('My Command')
->monthly()
->after(function() use ($schedule){
$command = DB::table('commands')
->where("name","My Command")
->orderBy('id', 'desc')
->first();
if(!$command->succeeded){
echo "task not finished";
$this->generateData($schedule);
}
else{
echo "task finished";
return;
}
});
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]