Php 使用swiftmailer发送批量电子邮件

Php 使用swiftmailer发送批量电子邮件,php,swiftmailer,Php,Swiftmailer,当有人在我的网站上注册时,我使用swiftmailer向用户发送电子邮件。 当我想向他们发送电子邮件时,我使用了相同的功能,但只是对我的所有成员进行了一次while循环,以便向所有成员发送电子邮件 我遇到的问题是,当我的会员表中只有10-20%的内容时,这个时间会在120秒左右超时。解决这个问题的最快方法是什么?我可以加睡眠还是 代码是 <?php include ('functions.php'); connect(); require_once 'lib/swift_required.

当有人在我的网站上注册时,我使用swiftmailer向用户发送电子邮件。 当我想向他们发送电子邮件时,我使用了相同的功能,但只是对我的所有成员进行了一次while循环,以便向所有成员发送电子邮件

我遇到的问题是,当我的会员表中只有10-20%的内容时,这个时间会在120秒左右超时。解决这个问题的最快方法是什么?我可以加睡眠还是

代码是

<?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++;
}
您应该使用CRON作业(linux)或计划任务(windows)来运行php脚本,每X秒发送一次电子邮件


每个PHP进程都有其最大执行时间,您可以提高它,但当用户列表变得更大时,这并不能解决您的问题。

如果发送的电子邮件超过两封,我会将任务放在后台,这样用户就不必等待。例如,任何需要几秒钟以上才能创建“que”的东西都是一样的吗?有关于如何执行此操作的文档吗?是的,后台任务可以永远运行,前台将根据您的设置超时,并且您不应该让用户等待超过几秒钟。您为什么不使用MailChimp或Campaign Monitor之类的第三方提供商来发送大量电子邮件活动?