используя swiftmailer для отправки массовой рассылки - PullRequest
0 голосов
/ 14 марта 2012

Я использую swiftmailer для отправки электронных писем пользователям, когда кто-то регистрируется на моем сайте.Когда я хочу разослать электронное письмо их членам, я использовал ту же функцию, но просто сделал цикл всех своих участников, чтобы отправить всем им электронное письмо.

Проблема, с которой я столкнулся, это время ожидания воколо 120 секунд, когда это только 10-20% пути через мою таблицу участников.Какой самый быстрый способ исправить это?Могу ли я добавить сон или ???

Код

<?php
include ('functions.php');
connect();
require_once 'lib/swift_required.php';

$result = mysql_query("SELECT member_id, email, firstname FROM members")
or die ("Error - Something went wrong.");

$i = 1;
while($row = mysql_fetch_array($result)){
    echo nl2br("memberid = $row[member_id]");
    $useremail = $row['email'];
    $user_name = $row['firstname'];
    $transport = Swift_SmtpTransport::newInstance('my smtp server', 25);

    $mailer = Swift_Mailer::newInstance($transport);

    $message = Swift_Message::newInstance()
        ->setSubject('my subject')
        ->setFrom(array('noreply@mydomain.com' => 'mydomain'))
        ->setTo(array("$useremail" =>" $user_name"))
        ->setBody(
           '<html>' .
           '<head></head>' .
           '<body>' .
                my email body
           '</body>' .
           '</html>',
           'text/html'
            );

    if ($mailer->send($message)){
        mail("registrations@mydomain.com", "ok", "email sent to '$useremail'", "Sent ok");
    }
$i++;
}

1 Ответ

0 голосов
/ 08 августа 2013

Вы должны использовать задания CRON (linux) или запланированные задания (windows), чтобы запускать php-скрипт отправки электронной почты каждые X секунд.

Каждый процесс PHP имеет максимальное время выполнения, вы можете увеличить его, но это не решит вашу проблему, когда список пользователей станет еще больше.

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