option('limit')); $query = Media::query() ->whereNull('processed_at') ->whereNull('remote_url') ->whereNull('deleted_at') ->whereNotNull('status_id') ->whereNotNull('media_path') ->whereIn('mime', [ 'image/jpg', 'image/jpeg', 'image/png', ]); if ($hasHourLimit) { $query->where('created_at', '>', now()->subHour()); } $medias = $query ->orderBy('created_at') ->orderBy('id') ->limit($limit) ->get(); foreach ($medias as $media) { if ($media->skip_optimize) { continue; } ImageOptimize::dispatch($media); } $this->info("Queued {$medias->count()} media candidates."); return self::SUCCESS; } }