2017-01-06 10 views
-1

私はデータベースを持っており、データベースには約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++; 


    } 

} 
+0

は何のサーバあなたからそのエラーを取得しないように、待ち行列システムを使用しますか? – arkascha

+0

そして、各メールの送信後に_something_を出力するとどうなりますか? – arkascha

+2

'sleep(5)'のため、これは長期実行スクリプトに変わります。おそらく、ブラウザから呼び出すのではなく、コマンドラインから呼び出すべきです。ただし、キューとスケジューラ(cron)を使用してxx分ごとに電子メールを送信する方が良い解決策になります。 – jeroen

答えて

0

一つの選択肢(1多分良くないが)リフレッシュ・デ・ページで、そのページをメールでロードされるたびにすることによって送信されますと、あなたは文句を言わないタイムアウトを持っています問題。

は、その参考になっホープ:)

1

タイムアウト問題はPHPサーバではなく、メールサーバから返された場合、あなたには、いくつかのオプションがあります。

  • GuiPabあなたは1を送信することができ、言ったように一度に5つ以上の電子メールを送信した後、自動的にページを更新し、さらに5つ送信し、すべての電子メールが送信されるまで繰り返します。
  • beanstalkdまたはredis
関連する問題