Самый эффективный способ массовой рассылки писем на многопользовательском сайте?

У меня многопользовательский сайт. Некоторые из моих клиентов рассылают по 1 электронному письму тут и там, другие могут отправлять 1000 одновременно.

Я использую SendGrid.com в качестве почтового сервера и SwiftMailer.org для моего кода PHP.

Проблема в том, что отправка каждого письма занимает около секунды. Я предполагаю, что ему нужно подключиться к SendGrid.com для аутентификации и т. Д. Таким образом, если вы отправляете 1000 электронных писем, это, по сути, займет около 1000 секунд, чтобы истечь время.

Я думаю, что лучший способ - хранить электронные письма в базе данных, а затем задание cron отправляет их.

Будет ли это самым эффективным способом? И должен ли я отправлять только определенное количество писем за раз? Так, например, 100 за задание cron?

Пока я говорю о заданиях cron, могут ли задания cron пересекаться? Итак, если бы я запускал задание cron каждую минуту, а странице потребовалось 2 минуты, чтобы отправить все электронные письма, задание cron снова запустится через минуту или будет ждать 2 минуты, пока не будет обработано последнее задание cron?

Спасибо за вашу помощь!

Бен


person Ben Sinclair    schedule 09.08.2012    source источник


Ответы (1)


У вас есть задача, связанная с вводом-выводом (в данном случае ввод-вывод сети/сетевой службы).

Задачи, связанные с вводом-выводом, идеально подходят для многопоточности.

Запустите несколько потоков в своем приложении для отправки, чтобы обрабатывать несколько запросов на отправку электронной почты параллельно.

Если вы хотите периодически проверять, готовы ли электронные письма к отправке, cron — отличный выбор. Тем не менее, вы можете рассмотреть в качестве альтернативы демон (также известный как служба), который постоянно работает (и, возможно, периодически спит).

person Eric J.    schedule 09.08.2012