Первый подход сначала извлекает все электронные письма, а затем отправляет их по одному в одном «экземпляре» задания, которое запускается как фоновый процесс, если вы ставите его в очередь.
Второй подход будет запускать n
«экземпляров» заданий, по одному на каждое письмо в фоновом процессе.
Таким образом, с точки зрения производительности вариант 1
является лучшим подходом. Вы также можете обернуть его в блок try - catch
в случае возникновения исключений, чтобы задание не переставало работать при сбое одного из электронных писем, например ::
try {
$emails = EmailList::get(['email']);
foreach($emails as $email){
Mail::to($email)->send();
}
} catch (\Exception $e) {
// Log error
// Flag email for retry
continue;
}