Start of CatalogVerify
This commit is contained in:
parent
7bd4bad941
commit
d21df1c575
@ -1,4 +1,5 @@
|
|||||||
APP_NAME=Laravel
|
APP_NAME=Laravel
|
||||||
|
APP_NAME_HTML_LONG="<b>Laravel</b>Application"
|
||||||
APP_ENV=local
|
APP_ENV=local
|
||||||
APP_KEY=
|
APP_KEY=
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
@ -7,15 +8,15 @@ APP_URL=http://localhost
|
|||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
DB_HOST=127.0.0.1
|
DB_HOST=database
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_DATABASE=laravel
|
DB_DATABASE=database
|
||||||
DB_USERNAME=root
|
DB_USERNAME=web
|
||||||
DB_PASSWORD=
|
DB_PASSWORD=
|
||||||
|
|
||||||
BROADCAST_DRIVER=log
|
BROADCAST_DRIVER=log
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=file
|
||||||
QUEUE_CONNECTION=sync
|
QUEUE_CONNECTION=database
|
||||||
SESSION_DRIVER=file
|
SESSION_DRIVER=file
|
||||||
SESSION_LIFETIME=120
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
|
52
app/Console/Commands/CatalogVerify.php
Normal file
52
app/Console/Commands/CatalogVerify.php
Normal 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 {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
62
app/Jobs/CatalogVerify.php
Normal file
62
app/Jobs/CatalogVerify.php
Normal 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.
|
||||||
|
}
|
||||||
|
}
|
@ -253,7 +253,7 @@ abstract class Catalog extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine the new name for the image
|
* Determine the new name for the image
|
||||||
* @deprecated
|
* @deprecated use $this->file_name()
|
||||||
*/
|
*/
|
||||||
public function file_path($short=FALSE,$new=FALSE)
|
public function file_path($short=FALSE,$new=FALSE)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user