0

データベース内のユーザーにプログラムで送信する自動電子メールには、いくつかの種類があります。金額は変わりますが、執行のタイミングはきっかりです。

そこで、1 日の異なる時間帯に異なる cron ジョブを実行するように設定する代わりに、1 時間ごとに実行するスクリプトを 1 つだけ作成して、時間をチェックし、それに応じて電子メールを送信することを考えていました。大まかなアイデアは次のとおりです。

date_default_timezone_set('America/Los_Angeles');
// setting the timezone to the one of the hosting server
$cur_hour = (int)date('G'); // PDT hour

if ($cur_hour == 1) { // 1am

    // collect information from db
    // send e-mail A to these users
    // update db

} elseif ($cur_hour == 2) { // 2am

    // collect information from db
    // send e-mail B to these users
    // update db

} elseif ($cur_hour == 3) { // 3am

    // likewise…

}

これは正しいアプローチですか、それともこれを行うためのより効率的またはより良い方法はありますか?

追加情報: 一部の電子メールには変数が含まれているため、単一の電子メールを送信することはできません。該当するユーザーごとに、たとえばメール Aを個別に送信する必要があります。そして、まだ何千人ものユーザーはいません。

4

1 に答える 1

0

などを含めることができる文字列(テンプレート)の配列があり$usernameます。時間に基づいて配列から適切な文字列を選択します。evalそのユーザーの電子メール メッセージを作成するために使用します。

人々が何と言おうと、これは の良い使い方ですeval。文字列はあなたの管理下にあるので安全です。変数がサニタイズされていることを確認してください (ただし、優れたプログラマーであれば、変数をデータベースに入れる前にサニタイズするか、エスケープします)。

于 2012-06-22T11:58:28.360 に答える