2016-05-17 20 views
2

Ich habe mehrere Aufgaben, die ich zu verschiedenen Zeiten ausgeführt habe. Hier sind die Aufgaben:Laravel: Cron Job-Aufgaben gleichzeitig ausführen

namespace App\Console; 

use Illuminate\Console\Scheduling\Schedule; 
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 

class Kernel extends ConsoleKernel 
{ 
    /** 
    * The Artisan commands provided by your application. 
    * 
    * @var array 
    */ 
    protected $commands = [ 
     Commands\PostGetter::class 
    ]; 

    /** 
    * Define the application's command schedule. 
    * 
    * @param \Illuminate\Console\Scheduling\Schedule $schedule 
    * @return void 
    */ 
    protected function schedule(Schedule $schedule) 
    { 
     $schedule->command('post_getter 0 5') 
      ->cron('*/15 * * * *'); 

     $schedule->command('post_getter 5 10') 
      ->cron('*/15 * * * *'); 

     $schedule->command('post_getter 10 20') 
      ->everyThirtyMinutes(); 

     $schedule->command('post_getter 20 30') 
      ->hourly(); 
    } 
} 

Um zu protokollieren, wenn jede dieser Aufgaben ausgeführt wird, habe ich das folgende Stück Code in der PostGetter Klasse hinzugefügt loggt sein, wenn die Aufgabe ausgeführt hat begonnen:

Log::info('Post getter for {arg1} and {arg2} has started.'); 

Dabei sind arg1 und arg2 die beiden Argumente im Scheduler (zB 0 5 oder 5 10).

Ich habe in meiner Protokolldatei festgestellt, dass diese Skripts nicht zur gleichen Zeit ausgeführt werden scheinen. Wenn beispielsweise die erste Task ausgeführt wird (post_getter 0 5), scheint die zweite Task (post_getter 5 10) erst nach der ersten Task ausgeführt zu werden und so weiter.

Wie kann ich dafür sorgen, dass alle in der Klasse Kernel aufgelisteten Aufgaben gleichzeitig ausgeführt werden und nicht auf die Beendigung der vorherigen Aufgabe warten müssen?

Antwort

0

Cronjobs/geplante Prozesse in Laravel werden sequentially ausgeführt.

Es gibt eine article über parallele Verarbeitung von geplanten Aufgaben in Laravel 4.3. Gegenwärtig gibt es in Laravel 5 keine Parallelverarbeitung.

0

Ich löste das, indem ich benutzerdefinierte Cron-Jobs hinzufügte, anstatt sie durch den Laravel-Scheduler zu führen.