Отправка Объемных электронных писем с помощью PHP

Я должен отправить письма всем пользователям в сайте, когда новый пользователь присоединяется. Моей проблемой является выполнение остановок сценария после отправки приблизительно 400 писем. Я установил set_time_limit на 0. И также я даю сон (2) после отправки 10 писем.

Какова может быть причина позади этой проблемы. Любое решение для этой проблемы. Там какой-либо лучший метод должен послать объемные электронные письма?

Заранее спасибо

Повысился

1
задан Rose 30 May 2010 в 09:05
поделиться

6 ответов

У меня была похожая проблема и она была связана с использованием памяти, как вы отправляете их, можете ли вы предоставить какой-нибудь код?

0
ответ дан 3 September 2019 в 00:13
поделиться

Если PHP работает в безопасном режиме, set_time_limit не будет иметь никакого эффекта. Если вы должны запустить PHP в безопасном режиме, вы можете изменить установленный по умолчанию лимит времени с помощью директивы конфигурации max_execution_time.

0
ответ дан 3 September 2019 в 00:13
поделиться

Я не знаю, почему ваш скрипт останавливается. Но вы также спрашивали о лучших способах отправки массовых писем. Я обнаружил, что использование почтового пакета дает гораздо больше контроля, чем встроенная команда PHP mail. Swift Mailer - очень хороший вариант.

0
ответ дан 3 September 2019 в 00:13
поделиться

Я отправляю новый ответ, потому что этот не имеет отношения к моему предыдущему.

Мне было интересно: где именно вы устанавливаете set_time_limit на 0 ? Я имею в виду, это в php.ini, .htaccess или из файла php с ini_set ().

Возможно ли, что это значение будет переопределено?

0
ответ дан 3 September 2019 в 00:13
поделиться

Попробуйте настроить очередь задач. Когда ваше веб-приложение хочет отправить письмо, оно добавляет его в базу данных задач, и отдельный демон обрабатывает каждую из них. Это означает, что вы можете задать отправку письма каждому пользователю сайта, и ваш демон будет отправлять каждое письмо каждые 2-4 секунды. Смотрите Kohana task queue module (PHP), Delayed_job (Ruby) и Celery (Python) для вдохновения.

0
ответ дан 3 September 2019 в 00:13
поделиться

Мы делаем это с помощью cron.

Мы (в нашей компании) разбиваем список пользователей на блоки по 50 адресов. Эти блоки помещаются в таблицу в базе данных (с данными, которые связывают этот блок с данными электронной почты (заголовки, тело, ...)).

Через файл cron.php, который запускается каждые 5 минут или около того, система берет первый доступный блок в базе данных, который нужно отправить, и рассылает электронные письма.

2
ответ дан 3 September 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: