diff --git a/app/Console/Commands/RebuildFilesize.php b/app/Console/Commands/RebuildFilesize.php new file mode 100644 index 00000000..a5d66cc9 --- /dev/null +++ b/app/Console/Commands/RebuildFilesize.php @@ -0,0 +1,77 @@ +info('This will only rebuild the cache for track files which exist on disk; non-existent files will be skipped.'); + + if ($this->option('force') || $this->confirm('Are you sure you want to rebuild the filesize cache? [y|N]', + false) + ) { + + TrackFile::chunk(200, function ($trackFiles) { + + $this->info('========== Start Chunk =========='); + + foreach ($trackFiles as $trackFile) { + $file = $trackFile->getFile(); + + if (File::exists($file)) { + $size = File::size($file); + $this->info('ID ' . $trackFile->id . ' processed - ' . $size . ' bytes'); + } else { + $size = null; + $this->info('ID ' . $trackFile->id . ' skipped'); + } + + $trackFile->filesize = $size; + $trackFile->update(); + } + + $this->info('=========== End Chunk ==========='); + + }); + + $this->info('Rebuild complete. Exiting.'); + + } else { + $this->info('Rebuild cancelled. Exiting.'); + } + } +} diff --git a/app/Console/Commands/RebuildTrackCache.php b/app/Console/Commands/RebuildTrackCache.php index ef5d5582..1dae63ce 100644 --- a/app/Console/Commands/RebuildTrackCache.php +++ b/app/Console/Commands/RebuildTrackCache.php @@ -64,6 +64,9 @@ class RebuildTrackCache extends Command public function handle() { $this->info('This will run \'php artisan down\' if you proceed and \'php artisan up\' when complete.'); + $this->info('***'); + $this->info('If this is your first time running this command, it is *highly* recommended that you run `php artisan filesize:rebuild` to cache file sizes for all files before they are deleted.'); + $this->info('***'); if ($this->option('force') || $this->confirm('Are you sure you want to delete all to-be-cached files and encode missing non-cached files? [y|N]', false) @@ -201,7 +204,7 @@ class RebuildTrackCache extends Command } // Encode recorded files - foreach($emptyTrackFiles as $emptyTrackFile) { + foreach ($emptyTrackFiles as $emptyTrackFile) { $this->dispatch(new EncodeTrackFile($emptyTrackFile, false)); } diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 6f76ff2b..9a7c58e2 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -41,6 +41,7 @@ class Kernel extends ConsoleKernel \Poniverse\Ponyfm\Console\Commands\PoniverseApiSetup::class, \Poniverse\Ponyfm\Console\Commands\ClearTrackCache::class, \Poniverse\Ponyfm\Console\Commands\RebuildTrackCache::class, + \Poniverse\Ponyfm\Console\Commands\RebuildFilesize::class, ]; /**