2016-11-28 15 views
0

私は最初のプロジェクトをPHPで開発しており、新しいものです。昨日、私はすべてのサイトメンバーに新しい投稿の電子メール通知を送信する機能を作成する必要がありました。私は機能を作りましたが、どれくらい良いのか分かりません。PHPを使用してバルク電子メールを送信するには?

ポストを作成した後、私はSQLですべてのサイトのメンバーを選択 -

「をdb.php」を含みます。

$query = "SELECT * FROM user"; 
$runQuery = mysqli_query($db, $query); 

これは私にすべてのサイトメンバーを与えます。私は、各メンバーの電子メールIDを持っている。この方法を

while($users = mysqli_fetch_assoc($runQuery) { 
    $email = $users['email']; 
} 

- それから私は、配列をループして、このような各メンバーの電子メールIDをつかみました。今ループで、mail()関数を使用して各サイトメンバーに電子メールを送信できます。

より良いコードを書くために、別のドキュメントに電子メールコードを送信し、 'include()'関数を使用してリンクしました。このように -

while($users = mysqli_fetch_assoc($runQuery) { 
    $email = $users['email']; 

include "send_email.php"; 
} 

どこのメールファイルは、$ヘッダ、$ EMAIL_SUBJECT、$ email_bodyと、このループから来ている$の電子メールを持って送ります。したがって、ループが実行されるたびに、新しい電子メールIDが作成され、その電子メールIDにメールが送信されます。

このコードは、サイトのメンバーが少なくなるまで、プロダクション(hostgator hosting)であっても、自分のlocalhostで動作します。しかし、私のライブサイト(メンバーが70人を超えています)でテストしたところ、ページは少なくとも10秒間続き、「ページは機能していません」というエラーが返されました。

ここで実際に何が起こっていますか?より多くのユーザーに電子メールを送信できないのはなぜですか?

+0

はライブサーバー上でphpメール設定ですか?サーバログを見ることなく、デバッグするのが非常に難しい。しかし、そのようなファイルを含めても、「より良いコードを書いている」ことは間違いありません。メーラークラスを構築して使用する方が良いでしょう。 – DevDonkey

+0

はいphpメールが設定されています。私はいくつかのメンバーに電子メールを送信したと言ったが、70人以上のユーザーを回覧したときに失敗した。 – Sandy

答えて

0

あなたは1ステップごとに "send_mail.php"ファイルを含めるので、多くのメモリとCPU使用量を意味します。

send_mail.phpファイル:

function sendMail($email){ 
    //your mail stuff.. 
} 

あなたのwhileループ:あなたはこのようにそれをしないなぜ

include "send_mail.php"; 
while($users = mysqli_fetch_assoc($runQuery)){ 
    $email = $users['email']; 
    sendMail($email); 
} 

また、PHPスクリプトのコードを実行するための時間制限があります。このコードをバイパスしたい場合、このコードをファイルの先頭に書く必要があります(ループ中)。

set_time_limit(0); 
+0

返信いただきありがとうございます。 send_mail.phpには$ header、$ email_subject、$ email_body、$ emailとmail()があります。それで、関数と同じコードを置くことは、私の仕事をするでしょう。 そして私はset_time_limit(0)を試みます。もう1つの質問です。何分または何秒間入力する必要がありますか? – Sandy

+0

はい、それは先生です。 –

+0

私はそれを試しています。時間制限を1分にするのが良いのか教えてください。 – Sandy

関連する問題