Вы можете использовать задание для постановки ваших писем в очередь. Таким образом, вам не придется ждать, пока все ваши письма будут поставлены в очередь.
В этом случае вы можете сгенерировать класс задания, используя, например, php artisan make:job SendNewsletter
, а затем вставить свой код из функции выше в функцию handle
в новом классе задания. Тогда в вашей функции sendNewsletter
вы можете просто поставить в очередь новый экземпляр класса задания, например, SendNewsletter::dispatch()
.
Я бы также предложил "chunking" ваши результаты из таблицы users
, так как вы получите столько результатов.