2016-09-27 4 views
0

私は私の質問を明確にするために例を提供してみましょう:有効期限を追跡する方法

  • 我々はノードアプリを持っており、この場合には、我々は顧客のサブスクリプションを持っています。デフォルトでは、新しい顧客をトライアルに登録する(トライアルの30days)と、dbレコードにトライアル審査の日付が設定されます。
  • 裁判は、我々は自由な計画

に顧客を移動したいと思い満了した後はバックエンドが裁判の有効期限が切れたとき、試用期間の終了を認識する必要があることがわかります。有効期限を追跡する方法は?いつものアプローチは何ですか?

最後に私が答えることができる質問については、一般的なアプローチはすべてのログインの前に有効期限を確認し、それに応じて行動することです。もう一つの可能​​性は、期限が切れた正確な時間に起こるcronのような仕事をすることです。

どの方が良いですか、どのようにcronのようなソリューションにアプローチするのですか?

アドバイスはありますか?

答えて

0

最善の方法は、ログイン時の有効期限を確認することです。これを行うことで得られる利点は、DBのオーバーヘッドが少なく、外部スクリプトが不要で、トリガーが必要なため、メンテナンス可能なコードがより確実になります。

+0

はい、ログアウトしないで常にセッションをリフレッシュするユーザーの可能性のあるバックドアの考え方が気に入らないため、ログインが開始されず、ユーザーはおそらくより高いレベルの計画に永久になる可能性があります。 –

+0

あなたは非常に有効なポイントを持っています。このシナリオでは、すべての着信要求であなたのためのチェックを行う要求フィルターを持つ必要があります。これは堅牢なソリューションになります。 – rushi

1

ほとんどの場合、cronジョブが望ましいです。二つの理由:

  • あなたは一般的に他のアクションを関連付けることがしたいと思うの有効期限、送信するときに起こる例-持っている任意の意味をなさないために、自分のアカウントの有効期限が切れたユーザーに電子メールをしている彼ら到着してサインインしてください。
  • DBレコードを他の目的のために最新のものにしたいと思っています。

上記の2番目の項目を明確にするには、ユーザーアカウントの変更を通知する電子メール(プライバシーポリシーの更新など)を送信したいと考えていますが、その電子メールを期限切れのアカウント。有効期限をチェックする必要はなく、データベースからすべてのアクティブなアカウントを選択する方がはるかに簡単です。 「自分のコードに追加するのは簡単ですが、このデータベースを使用する別のシステムがある場合、またはRPCを使用してシステムに照会するシステムがある場合はどうなりますか? SQL?あなたは突然、多くの可能なシステム(またはあなたのコードベース内の場所)にその有効期限チェックコードを複製する必要があり、active==Trueのチェックはずっと簡単です。

ジョブに関する情報については、同様の質問の別の短いstack overflow postがあります。

関連する問題