where('published_at', '<', now()) ->whereNull('subscribers_notified_at') ->get(); logger(count($articlesForNotification) . ' article(s) ready for notifying.'); // HARD CODE LIMIT 100 subscribers. (Kinda scared of gettings spammed and want to monitor it slowly) $subscribersToNotify = Subscriber::limit(100)->get(); logger(count($subscribersToNotify) . ' subscribers(s) to notify.'); logger((count($articlesForNotification) * count($subscribersToNotify)) . ' emails being queued for send.'); foreach($articlesForNotification as $article) { $article->update(['subscribers_notified_at' => now()]); foreach($subscribersToNotify as $subscriber) { Mail::to($subscriber)->queue(new NewArticlePublished($article, $subscriber)); } } $endTime = microtime(true); logger('Command Succeeded in ' . ($endTime - $startTime) . ' second(s).'); } }