2017-09-15 1 views
0

Ich will Arbeitsplätze in Laravel Scheduler im Falle des Scheiterns neu zu laufen, wird Folgendes vorausgesetzt:
Kernal.phpre-run Jobs in Laravel Scheduler

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; 
    } 
    }); 
} 

dieser Befehl nicht manchmal, auf nach Funktion Ich überprüfe, ob der Befehl fehlschlägt oder nicht, dann versuche ich es erneut auszuführen, aber das hat nicht funktioniert und ich habe den folgenden Fehler:
[ErrorException] Fehlendes Argument 1 für App \ Console \ Kernel :: App \ Console {closure}()

irgendwelche Vorschläge?

Antwort

1

Sie sind das $ Zeitplan für die falsche Art und Weise in der anonymen Funktion einstellen, verwenden Sie die ‚Verwendung‘ Anweisung wie folgt:

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; 
    } 
    }); 
} 
+0

Ja, Sie haben Recht, es Ihnen danken! –