PHP Bulk Email - выделенный IP Макс? - PullRequest
0 голосов
/ 25 августа 2009

Можно ли как-нибудь отправить более 3000+ писем по одному запросу php-скрипта, не перегружая выделенный IP-адрес ... максимум будет 500 в час?

Если вы не понимаете меня .. здесь подробно:)

Я могу отправлять только 500 электронных писем с помощью функции mail () в PHP в час через мой выделенный IP-адрес, есть ли способ, например, отправлять, например, 3000 строк писем, извлеченных с адреса электронной почты, но шокировать почту работает на 500 в час ...

Спасибо уже!

Ответы [ 5 ]

2 голосов
/ 26 августа 2009

Создайте 2 таблицы, одну для сообщения электронной почты и одну для списка получателей. Затем создайте скрипт, который будет запускать cron, который проверяет, есть ли новое сообщение в таблице сообщений и, если это так, отправляет партию электронной почты следующему набору получателей. Пометка каждого получателя после отправки письма.

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

Если нет сообщений для отправки, ваша работа cron ничего не делает.

1 голос
/ 28 августа 2009

Спасибо за все ответы! Наилучшим способом, который я нашел, было на самом деле просто sleep () между вызовами, используя sleep (), так как я проверял 400 писем, это заняло 17 секунд:)

Маловероятно, что пользователь отправит более 450 пределов ... но если они это сделают, у меня будет оператор if до того, как while () завершит проверку, если есть более 450 строк, если это так, он будет спать между каждым. .. это работает без неудобных баз данных:)

Спасибо!

1 голос
/ 25 августа 2009

Я бы поместил поле в БД, чтобы показать, когда последнее письмо было отправлено каждому пользователю, и какое это было письмо. У меня также была бы другая таблица БД для отображения каждого отправленного вами электронного письма, и если оно было отправлено всем пользователям.

User Table:
Id, UserName, Email, etc, DateTimeOfLastEmail, LastEmailId

Email Table:
Id, EmailSubject, EmailContent, DateTimeSent, SentToAll(True/False), DateTimeOfFinish
1 голос
/ 25 августа 2009

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

0 голосов
/ 25 августа 2009

хорошо после некоторой математики вы можете отправлять электронное письмо каждые 8,3 секунды (498 / час), но это не решает проблему. Я думаю, что другим подходом было бы использовать БД, запросить 500 и сделать так, чтобы задание CRON запускало скрипт каждый час.

Таким образом, в таблице DB вы можете сделать так, чтобы скрипт обновил поле после отправки электронного письма, чтобы следующее задание cron запросило и получило следующие 500 электронных писем, которые необходимо отправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...