Я использую swiftmailer для отправки электронной почты пользователям, когда кто-то регистрируется на моем сайте. Когда я хочу отправить электронное сообщение им, я использовал ту же функцию, но просто сделал цикл из всех моих членов, чтобы отправить электронное письмо всем им.с использованием 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('[email protected]' => 'mydomain'))
->setTo(array("$useremail" =>" $user_name"))
->setBody(
'<html>' .
'<head></head>' .
'<body>' .
my email body
'</body>' .
'</html>',
'text/html'
);
if ($mailer->send($message)){
mail("[email protected]", "ok", "email sent to '$useremail'", "Sent ok");
}
$i++;
}
При отправке более нескольких писем я всегда ставил задачу на задний план, поэтому пользователь не должен ждать. то же самое для всего, что занимает больше, чем пара секций –
, чтобы создать «que», например? есть ли какая-либо документация о том, как это сделать? – user112570
yup, фоновые задачи могут выполняться вечно, передний план будет выходить из строя в зависимости от ваших настроек, и вы не должны заставлять пользователя ждать пару секунд. –