私はデータベースを持っており、データベースには約300の電子メールがあります。送信中です。このエラーが発生しています:PHPで複数の電子メールを同時に送信する方法
504 Gateway Time-out The server didn't respond in time
どうすればよいですか?ここで
はコードです:
$result = $pdo->query("SELECT * FROM table WHERE week= ".date('W')." ") $count = 1;
while($row = $result->fetch(PDO::FETCH_ASSOC))
{
if (!filter_var($row['Email'], FILTER_VALIDATE_EMAIL) === false)
{
$Fr_Email = $row['Email'];
$title= "xxx - xxx";
$tete.= "From:XXX <[email protected]>\n";
$tete.= "X-Priority: 1 \n";
$tete.= "MIME-Version: 1.0"."\n";
$tete.= "Content-Transfer-Encoding: 8bit \n";
$tete.= "Content-type: text/html; charset=utf-8"."\n";
$corps= "Body";
mail($Fr_Email, $title, $corps, $tete);
if ($count % 5 == 0) {sleep(5);} $count++;
}
}
は何のサーバあなたからそのエラーを取得しないように、待ち行列システムを使用しますか? – arkascha
そして、各メールの送信後に_something_を出力するとどうなりますか? – arkascha
'sleep(5)'のため、これは長期実行スクリプトに変わります。おそらく、ブラウザから呼び出すのではなく、コマンドラインから呼び出すべきです。ただし、キューとスケジューラ(cron)を使用してxx分ごとに電子メールを送信する方が良い解決策になります。 – jeroen