Доброго времени суток, всех с праздниками. Возник вопрос, есть: 1) $array_id - список идентификаторов юзеров 2) $array_mails - список мейлов полученных по списку идентификаторов 3) каталог c файлами вложений в виде pdf файлов (например uploads, кстати, у каждого пользователя - свое уникальное вложение). Имя вложения - $user_id.'pdf' Нужно сделать массовую рассылку при условии, что у нас большое количество исходных данных. Например 1000 клиентов. Первое что приходит в голову, грубо говоря: Код (PHP): <span class="syntaxdefault"></span><span class="syntaxkeyword">foreach (</span><span class="syntaxdefault">$array_id </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$user_id</span><span class="syntaxkeyword">)<br />{<br /> foreach (</span><span class="syntaxdefault">$array_mails </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$user_mail</span><span class="syntaxkeyword">)<br /> {<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">email</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">to</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$user_mail</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">email</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">attach</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/uploads/'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$user_id</span><span class="syntaxkeyword">.</span><span class="syntaxstring">'.pdf'</span><span class="syntaxkeyword">);<br /> </span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">email</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">send</span><span class="syntaxkeyword">();<br /> }<br />} </span><span class="syntaxdefault"></span> Так же первое, что приходит в голову исходя из выше описанного: 1) это ужасный костыль 2) при одновременной отправке 1000 писем (например) без таймаута мой хостер меня пошлет. Прошу совета, как можно было бы реализовать данную штуку.
Организуйте очередь отправки. Рассылайте по крону не более чем N писем за раз. Для этого вам понадобится новый класс почтовика, который будет иметь тот же интерфейс, что $this->email, но реально будет складывать письма в очередь. Уверен, что для CI уже есть что-то такое. А нет, так сделайте сами. Добавлено спустя 10 минут 28 секунд: Либо платите: гуглить "платные сервисы почтовых рассылок".
Use the cli, Luke. Подгружать инстанс кодэгайтера, или каким-нибудь плагинами или напрямую через индекс.php А там или "параллелить" через pcntl или просто очередью пускать.
Спасибо за советы. Вопрос по крону. У меня к нему доступ, только через IPS manager через форму, в которой два поля - путь до скрипта и установкап периода. По инструкции: Мне необходимо указать путь аж до php файла (http://site.com/sendmail/send.php) или достаточно до контроллера? (http://site.com/sendmail/)
Судя по вопросу, ты не понял саму идею. Добавлено спустя 1 минуту 35 секунд: Тебе понадобится новый "контроллер" для обслуживания очереди.
У меня есть класс, который складирует письма в таблицу вида: id, user_id, user_email, text и метод который делает отправку по n письмам из таблицы.. Вопрос был про корректность записи в самом планировщике /usr/bin/php -f /var/www/login/data/www/site.com/queueclass
ясно. ну тогда у тебя все необходимые части есть. про расположение файлов я х его з! зачем тебе мнение со стороны, ты можешь заглянуть и попробовать сам )))
Посмотрите в доках по фреймворку, как делать консольные контроллеры Добавлено спустя 34 секунды: У наследника CodeIndiger Kohana таковые имеются, наверное есть и в нём.