Просмотр исходного кода

Add FailedJob garbage collection

Daniel Supernault 5 лет назад
Родитель
Сommit
5d424f126a
2 измененных файлов с 50 добавлено и 0 удалено
  1. 49 0
      app/Console/Commands/FailedJobGC.php
  2. 1 0
      app/Console/Kernel.php

+ 49 - 0
app/Console/Commands/FailedJobGC.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\FailedJob;
+
+class FailedJobGC extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'gc:failedjobs';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Delete failed jobs over 1 month old';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        FailedJob::chunk(50, function($jobs) {
+            foreach($jobs as $job) {
+                if($job->failed_at->lt(now()->subMonth())) {
+                    $job->delete();
+                }
+            }
+        });
+    }
+}

+ 1 - 0
app/Console/Kernel.php

@@ -31,6 +31,7 @@ class Kernel extends ConsoleKernel
                  ->hourly();
         $schedule->command('horizon:snapshot')->everyFiveMinutes();
         $schedule->command('story:gc')->everyFiveMinutes();
+        $schedule->command('gc:failedjobs')->daily();
     }
 
     /**