Files
crawlshot/app/Jobs/CleanupOldResults.php
2025-08-10 21:10:33 +08:00

43 lines
1.2 KiB
PHP

<?php
namespace App\Jobs;
use App\Models\CrawlShotJob;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Log;
class CleanupOldResults implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function handle(): void
{
$cutoffTime = now()->subHours(24);
$oldJobs = CrawlShotJob::where('created_at', '<', $cutoffTime)->get();
$deletedFiles = 0;
$deletedJobs = 0;
foreach ($oldJobs as $job) {
if ($job->file_path && Storage::exists($job->file_path)) {
Storage::delete($job->file_path);
$deletedFiles++;
}
$job->delete();
$deletedJobs++;
}
Log::info("Cleanup completed", [
'deleted_files' => $deletedFiles,
'deleted_jobs' => $deletedJobs,
'cutoff_time' => $cutoffTime->toISOString()
]);
}
}