瀏覽代碼

Add Media GC

Daniel Supernault 6 年之前
父節點
當前提交
f69598eb1b
共有 1 個文件被更改,包括 60 次插入0 次删除
  1. 60 0
      app/Console/Commands/MediaGarbageCollector.php

+ 60 - 0
app/Console/Commands/MediaGarbageCollector.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\{Media, Status};
+use Carbon\Carbon;
+
+class MediaGarbageCollector extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'media:gc';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Delete media uploads not attached to any active statuses';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $gc = Media::whereNull('status_id')
+        ->where('created_at', '<', Carbon::now()->subHours(6)->toDateTimeString())
+        ->orderBy('created_at','asc')
+        ->take(500)
+        ->get();
+
+        foreach($gc as $media) {
+            $path = storage_path("app/$media->media_path");
+            $thumb = storage_path("app/$media->thumbnail_path");
+            if(is_file($path)) {
+                unlink($path);
+            }
+            if(is_file($thumb)) {
+                unlink($thumb);
+            }
+            $media->forceDelete();
+        }
+    }
+}