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() ]); } }