0

定期的 (例: 毎月) サブスクリプションを持つ有料アプリケーションの mysql データベースで、サブスクリプションが期限切れになっているユーザーをチェックして非アクティブにする最良の方法は何ですか? 通常はアプリで有効期限が過ぎていないか確認するだけですが、無料やお試しなど、有効期限のないアカウントもあります。

クライアント アプリケーション側で物事をシンプルに保ち、すべてのアカウントの大文字と小文字を切り替えるのではなく、「アクティブ」ステータスを確認するだけでよく、ユーザーがアプリを使用できるようにしたいと考えています。種類と賞味期限。また、顧客の要求に応じて、アカウントの種類が将来変わる可能性があります。ロジックが (php) バックエンドにある場合は、新しいクライアント バージョンを必要とせずに更新できます。

テーブルは次のようになります。

User ID | Expiry date | Status

私が現在行っている方法は、時々実行されるcronjobがあり、有効期限が現在の時刻を過ぎたすべてのユーザーを更新することです。

要約すると、私の質問は次のとおりです。

  • 現在の方法では、本番環境に入って多数のユーザーがいる場合、サーバーに負荷が急増することはありますか?
  • これを行うためのより良い、よりクリーンな方法はありますか? アクティブ/非アクティブなユーザーと有効期限を処理するための別の更新方法または別のロジックですか?
4

2 に答える 2

0

このタスク用の CRON JOB を作成できます。

http://en.wikipedia.org/wiki/Cron

于 2013-03-05T09:26:01.473 に答える
0

ユーザーがログオンしたときに有効期限が切れていないかどうかを確認するだけではどうですか。

つまり、次のようなクエリ

SELECT COUNT(*), expiry IS NULL OR expiry > NOW()
FROM users
WHERE username = ?
AND password = ?

次に、ユーザー名とパスワードの組み合わせが正しいかどうかを確認し、正しい場合はアカウントの有効期限が切れているかどうかを確認します。有効期限のないアカウントには NULL を使用します。

これには、毎日チェックする必要があるアカウントの一部のみが必要であるという利点があります (ここでは、ユーザーがログインするとセッションがタイムアウトになると推測しています)。

于 2013-03-05T09:12:42.380 に答える