Ошибка при рассылка большому кол-ву пользователей

2
Столкнулся на «Новой музыке» с такой неприятной проблемой: вот подписаны у меня на блог/форум 700-1500 пользователей… Если поставить им всем уведомление на появление нового топика, то phpmailer (по smtp) не справляется с отправкой, через nn секунд вылетает ошибка 500 сервера… Как нибудь можно всю отправку почты оформить в фоновый режим?
  • +3
  • 22 декабря 2008, 23:13
  • Covax

Комментарии (9)

RSS свернуть / развернуть

Можно попробовать так:
Выносишь Функцию отправки в отдельный скрипт, а потом при создании топика выполняешь

$iTopicId = 1;
$result = exec("/usr/local/bin/php mailing_topic.php $iTopicId",$aResult);
 
0
Кирилл, напомни, как в php ставить паузу, скажем после каждой отправки скрипт должен засыпать на 3 секунды… Вообще есть хорошие скрипты рассылок на php поковыряться, посоветуйте?
0
ru2.php.net/sleep хотя пауза тебе не поможет) Тебе разумно запускать отдельный процесс!
По поводу рассылок не помню уже скрипты) а чем тебе библиотека которую Макс взял не нравится?
0
пауза для отдельного скрипта понятное дело :)))
phpmailer разве заточен на рассылку большому числу пользователей? пойду посмотрю
0
а ты по логам узнал что смтп не работает?
0
а кто сказал что не работает? я просто бережно к smtp серверам привык относится, чтобы не забанили :)
0
если делать через exec, то он вроде как будет ждать отработки команды. Здесь можно форкнуть процесс для рассылки.
Но лучшим решение будет таким: при создании топика не производить отправку уведомлений, а писать их в отдельную таблицу. Каждые n минут стартует крон и производить рассылку из этой таблице по m уведомлений за раз.
0
  • avatar
  • ort
  • 23 декабря 2008, 00:12
да, это идея, даже можно раз в сутки типа дайджест новых топиков рассылать таким образом

p.s. Здесь можно форкнуть процесс для рассылки. это что значит?
0
http://ru2.php.net/manual/ru/function.pcntl-fork.php
создает дочерний процесс и родительский по идеи может не ждать его завершения
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.