0
誰かが自分のサイトに登録したときに私はswiftmailerを使ってメールを送信しています。 私はそれらのメンバーに電子メールを送りたいとき、私は同じ機能を使いましたが、すべてのメンバーのすべてのメンバーに電子メールを送るためにループを繰り返しました。swiftmailerを使用してバルクメールを送信
私のメンバーテーブルでは、わずか10〜20%の方法で、この時間が約120秒です。これを固定する最速の方法は何ですか?私は睡眠を追加することはできますか???
コードは、あなたがX秒ごとに電子メールを送信するPHPスクリプトを実行するcronジョブ(Linux)またはスケジュールされたタスク(Windows)を使用する必要があります
<?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
ええ、バックグラウンドタスクは永遠に実行できます。フォアグラウンドは設定に応じてタイムアウトしますので、ユーザーを2秒以上待機させるべきではありません。 –