当有人在我的网站上注册时,我正在使用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++;
}
答案 0 :(得分:0)
你应该使用CRON作业(linux)或计划任务(windows)来运行每X秒发送一次电子邮件的php脚本。
每个PHP进程都有其最大执行时间,你可以提高它,但是当用户列表变得更大时,这不会解决你的问题。