2

バックグラウンド:

私は、現在および今後のシーズンのテレビ番組を一覧表示するサイトに取り組んでおり、それぞれの次のエピソードへのカウントダウンを完備しています。これらの番組には、番組の表と、対応するエピソードの表があります (エピソードごとに 1 つの行があり、それぞれに正しい放送日があります)。

ここで、ユーザーが選択したシリーズの最新情報を電子メールで送信することをオプトインできるようにしたいと考えています。そのため、メールと、そのメールに送信するシリーズの更新を含むテーブルがあります。メールの内容は、「秋にこんなシリーズが放送されることが発表されました」などの簡単なお知らせです。または「これこれシリーズのエピソード 3 が利用可能になりました。」

過去 30 分以内に放映されたエピソードを検索し、ループして、通知を受け取ることを選択した人にメールを送信するスクリプトを作成できると確信しています。しかし、実際の実行を自動的に行う方法がわかりません。毎週のまとめではなく、できるだけ関連性のある時間に近い時期に電子メールを送信してほしい. 番組は外国のものです。つまり、放送時間が変なため、自分でスクリプトを実行することはできませんが、とにかく自動化を好む.

私の質問:

  1. さまざまな検索で、cron ジョブに出くわしました。これが本当に最善の方法ですか?
  2. 30分ごとに実行するのは悪い考えですか?
  3. 私のサイトは現在 PHP を使用していますが、私が読んだ限りでは、メール送信には非効率的です。では、Perl はメール送信に使用するのに適した言語でしょうか? そうでない場合、どの言語を使用すればよいですか? (理想的には、より一般的で確立された言語)
4

1 に答える 1

0
  1. .shいいえ。精度は、スクリプトや小さなリスナーなどで実行する必要のない秒まで正確である必要はありません。

    ただし、更新をより正確にしたい場合は、次のようなものを使用できます。

    script.sh

    #!/bin/sh
    while [ 1 ]
    do
        php -q "/path/to/mail.php"
        sleep 5000
    done
    

    この例では、スクリプトを 5 秒間隔で呼び出すことができます。

  2. いいえ。データベースを効率的にループするように PHP をスクリプト化した場合 (例: PHP ループではなく、SQL 結合を使用)、より短い間隔でスクリプトを実行しても機能します。

    PHP ループは次のようになります。

    foreach ($users as $user) {
        $mysqli->query("SELECT `shows` FROM `user_shows` WHERE `id`=".$user->id);
    }
    

    SQL Joinの方が良いでしょう。

    SELECT `shows` FROM `user_shows` JOIN `users` ON user.id = user_shows.user_id;
    
  3. いいえmail、別の場所で定義された設定を使用し、効率はメール サーバー/サービスの効率によって決まります。

    mailさらに、 PHPのデフォルト関数を使用する必要さえありません。PHPMailerまたはFeedBurnerなどのサードパーティ サービスを使用できます。

于 2013-07-13T06:18:41.953 に答える