2011-10-18 6 views
1

は私がユーザの好みによるMySQLとスケジュールされたアップデート?

  • 表に格納(ユーザーに)電子メールアドレス、そのアプリケーションを開発しています。
  • は、ユーザーがテーブルに滞在したい日数を格納します。
  • は、日数が過ぎるとユーザーをテーブルから引き離します。

私は本当にこれにアプローチする方法がわからないので、ここで私の質問は:、各二

  1. 私は現在で保存されている時間ごとにテーブルエントリを介してアプリケーションのチェックを持っています、たとえば、time_leftの列はどうでしょうか?
  2. 私はかなりの数(10,000人以上)のユーザーを期待している場合、(1)非効率的ではありませんか?
  3. not(2)の場合、そのようなタスクにはどのようなアルゴリズムを実装するのが最適でしょうか?
  4. 私はここで何をしようとしていますか?私はスクリプトを書いている間に、これまでにさらに研究をしたいので、まずは良い検索クエリが必要です。

私はこのスクリプトをPerlで書くつもりですが、私は言語の選択、フレームワークなどについての提案はしていますが、私は実際にはWeb開発の新機能です(バックエンドとフロントエンド)、私はあなたが私に正確にアドバイスできるなら、それを感謝します。

ありがとうございました!彼らは要求され得ることはありません場合は、ユーザーを格納する理由

:投稿後

*は、Topenerは有効な質問を?

ユーザーがデータベースに座っていると仮定します。

たとえば、ユーザーがデータベースに追加されてから5分ごとにユーザーの電子メールアドレスを使用しているとします(したがって、ユーザーのエントリが2:00 PM- 10月18日に生まれた場合、ユーザーにアクセスします2時5分、2時10分など)。

ユーザーは、彼らが10日でデータベースから必要と判断した場合、それは彼らのエントリは(2時PM-October 18から5分ごとに)2時PM-October 28

まで正常にアクセスされていることを意味

この状況に基づいて明確にする:

システムは、現在の有効期限とユーザーの有効期限とを常に比較する必要がありますか?

答えて

0

設定された間隔で削除クエリを作成する別のプログラム/スクリプトを書くことができます。 Linuxマシンを使用している場合は、それを行うためのcronジョブを作成することができます。毎秒それを行うことは、低速のマシンや大きなテーブルでは非常にリソース集中的になるかもしれませんが、単純な削除クエリの問題になるとは思われません。

2

あなたはtime_left変数を保存しないでください.btにはvaildToを保存してください。この方法では、ユーザーがデータベースから要求されるたびに、そのユーザーが有効かどうかを確認できます。

もしそうでない場合は、それを使って何でもしてください。

このアプローチでは、どのcronjobsを作ってもらうことはできません。

+0

私が説明したシナリオを考えれば、なぜユーザーは要求されますか?それでも、WHEN、またはユーザーがいつデータベースから削除されるべきかを確認する必要があるかどうかはわかりません。 –

+0

なぜユーザーがリクエストされない場合は保存しますか?さらに、2つの日付を比較できることを願っていますか? –

+0

それに答える、そうです。しかしこれはまだ毎秒何かを実行するよりも理にかなっています –

1

こんにちはMr_spock私はTopenerから上記の答えが好きです。ユーザーが有効にしたい日数を保存する代わりに、ユーザーが削除したい日を保存します。 DATETIMEフィールドタイプになりvalidToDateのようなフィールドを追加する

、あなたはvalidToDate < = NOW()

    テーブル名から削除

    ようなクエリを行うことができます

  • イタリック体テキストはSQLクエリです
  • tablenameはテーブルの名前です)質問
  • NOW
  • (中validToDateは、これは、これまでにどのような効率のSQLサーバーの約束を持っているタイプのDATETIMEのフィールド

ある現在のDateTime

  • を返す有効なSQL関数ですが、私はそれはかなり良いと思います。

  • 関連する問題