kopia lustrzana https://github.com/pixelfed/pixelfed
				
				
				
			
		
			
				
	
	
		
			59 wiersze
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			59 wiersze
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
namespace App\Console\Commands;
 | 
						|
 | 
						|
use Illuminate\Console\Command;
 | 
						|
use App\{Media, Status};
 | 
						|
use App\Services\MediaStorageService;
 | 
						|
 | 
						|
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()
 | 
						|
	{
 | 
						|
		$limit = 500;
 | 
						|
 | 
						|
		$gc = Media::whereNull('status_id')
 | 
						|
		->where('created_at', '<', now()->subHours(2)->toDateTimeString())
 | 
						|
		->take($limit)
 | 
						|
		->get();
 | 
						|
 | 
						|
		$bar = $this->output->createProgressBar($gc->count());
 | 
						|
		$bar->start();
 | 
						|
		foreach($gc as $media) {
 | 
						|
			MediaStorageService::delete($media, true);
 | 
						|
			$bar->advance();
 | 
						|
		}
 | 
						|
		$bar->finish();
 | 
						|
		$this->line('');
 | 
						|
	}
 | 
						|
}
 |