Я только что написал набор классов массовых рассылок для обработки огромного количества писем и анализа их содержимого в соответствии с переданными параметрами.Если я проверяю электронную почту на 1000 случайных получателей и 1000 случайных отправителей из моей базы данных, вплоть до момента, когда сценарий достигает части send () (я это прокомментировал на данный момент), я получаю производительность около 2 секунд и 20 МБ пиковой памяти, что здорово.
Однако, если я раскомментирую отправляющую часть, отправка займет 30 секунд.Это недопустимо, и я хотел бы как-то ускорить его.Из тестирования очевидно, что задержка вызвана не чем иным, как вызовом $ mail-> send (), как если бы он ожидал, чтобы он возвратил что-то перед продолжением цикла и отправкой следующего письма.
ЧтоМне интересно: как мне ускорить вызов send ()?Что я могу сделать, чтобы сделать это быстрее?Я попытался использовать два метода отправки:
- Транспорт Zend SMTP, подключение к серверу напрямую и просто отправка.Это занимает 30 секунд на 1000 писем.
- Sendmail via Zend_Mail.Просто вызывая функцию отправки Zend_Mail после подготовки каждого письма.Это занимает 60 секунд.
Обратите внимание, что организация очередей определенно является опцией, и я встроил ее в свои классы.Все, что нужно, это активировать cron, и это работает как заклинание.Но я задаюсь вопросом о фактической отправке и как ускорить это.Итак, фактический вызов send ().