Моя текущая настройка выглядит следующим образом:
У меня есть список клиентов, которым я хочу рассылать массовые электронные письма. В моем программном обеспечении у меня есть возможность отправить немедленно или запланировать время, когда оно должно быть отправлено. Я использую Laravel, поэтому я сохраняю данные электронной почты в своей базе данных с указанием времени и даты отправки, а затем настраиваю расписание в консоли kernel.php для проверки этой таблицы, и если есть электронные письма, которые должны быть отправлены, они будут отправлены.
Во-первых, я подтверждаю, что им не нужно ставить это в очередь в SQS, так как в основном моя установка ставит его в очередь (если нет преимуществ, о которых я не знаю)
Теперь я вижу, что есть два варианта:
С вариантом 1 у меня есть ограничение в 14 электронных писем в секунду с SES, поэтому я придумал это.
$i=0;
foreach($clients as $client) {
// send email code
if (($i++ % 10) == 0) {
sleep(1);
}
}
Я считаю, что это будет отправлять только 10 в секунду.
С вариантом 2 у меня есть ограничение в 50 адресов электронной почты для каждого звонка (я думаю, что это предел), поэтому нужно отправлять пакеты по 50, что было бы довольно просто.
Итак, мой вопрос: что лучше, и если я использую вариант 1, мой код правильный или есть лучший способ его написать?
Или я все делаю не так и есть способ получше !!






Для всех, кто хочет получить ответ на этот вопрос, решение выглядит следующим образом:
Если вы отправляете электронные письма и имеете дело с какими-либо динамическими данными самостоятельно, просто используйте вариант 1, перебирайте каждый адрес электронной почты и отправляйте в SES API, индивидуально устанавливая задержку в скрипте при каждой отправке. Следующие должны отправлять 10 каждую секунду.
foreach($clients as $client) {
// send email code
usleep(100000);
}
Если вы хотите персонализировать имя получателя в теле письма, используйте опцию шаблона и отправляйте одновременно не более 50 адресов, так как это предел для каждого вызова API.