Start of CatalogVerify

This commit is contained in:
Deon George 2020-07-16 11:41:17 +10:00
parent 7bd4bad941
commit d21df1c575
No known key found for this signature in database
GPG Key ID: 7670E8DC27415254
4 changed files with 120 additions and 5 deletions

View File

@ -1,4 +1,5 @@
APP_NAME=Laravel
APP_NAME_HTML_LONG="<b>Laravel</b>Application"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
@ -7,15 +8,15 @@ APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_HOST=database
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_DATABASE=database
DB_USERNAME=web
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
QUEUE_CONNECTION=database
SESSION_DRIVER=file
SESSION_LIFETIME=120

View File

@ -0,0 +1,52 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Foundation\Bus\DispatchesJobs;
use App\Jobs\CatalogVerify as Job;
class CatalogVerify extends Command
{
use DispatchesJobs;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'catalog:verify'.
' {type : Photo | Video }';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Verify media on disk and in the DB';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
if ($this->argument('type')) {
$this->dispatch(new Job($this->argument('type')))->onQueue('scan');
} else {
}
}
}

View File

@ -0,0 +1,62 @@
<?php
namespace App\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log;
use App\Traits\Type;
class CatalogVerify extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels, Type;
// What we should verify
private $type = NULL;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(string $type) {
$this->type = $type;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info(sprintf('%s: Scanning [%s]',__METHOD__,$this->type));
// Go through DB and verify files exist
$class = $this->getModelType($this->type);
$good = $bad = $ugly = 0;
$result = $class::select('*')->each(function($o) use ($good,$bad,$ugly) {
if (! file_exists($o->file_name(FALSE))) {
Log::error(sprintf('Media doesnt exist: [%s] (%d:%s)',$this->type,$o->id,$o->file_name(FALSE)));
$bad++;
return;
}
if (($x=md5_file($o->file_name(FALSE))) !== $o->file_signature) {
Log::error(sprintf('Media MD5 doesnt match DB: [%s] (%d:%s) [%s:%s]',$this->type,$o->id,$o->file_name(FALSE),$x,$o->file_signature));
$ugly++;
return;
}
$good++;
});
Log::info('DB Media Verify Complete: [%s] Good: [%d], Missing: [%d], Changed: [%d]',$this->type,$good,$bad,$ugly);
// Go through filesystem and see that a record exists in the DB, if not add it.
}
}

View File

@ -253,7 +253,7 @@ abstract class Catalog extends Model
/**
* Determine the new name for the image
* @deprecated
* @deprecated use $this->file_name()
*/
public function file_path($short=FALSE,$new=FALSE)
{