2016-10-09 8 views
0

管理者が投票を作成して終了日を設定し、この日付が到着したときにシステムが投票を終了し、購読しているユーザーに電子メールを送信し、ユーザーはもう投票できません。私は他のすべての機能を実装していますが、その日に投票を終了することには苦労しています。私は確立された日付に投票を終了する仕事を設定した、いくつかの永続的なcronのようなスケジューラーについて考えましたが、これが最善のアプローチかどうかはわかりません。あなたはこの問題を解決する方法に関するアイデアはありますか?ありがとう投票システムの終了日機能の実装方法は?

+0

NodeJSプログラムは常にサーバ上で実行されていますか? – AppleCrazy

+0

私が本当に質問を理解しているかどうかはわかりませんが、私はそれがそうであると言います。 –

+0

データベースを使用していますか、またはすべてがメモリに保存されていますか? – AppleCrazy

答えて

0

インプロセスとアウトプロセスの2つの基本的なアプローチがあります。インプロセスは簡単ですが、メインプログラムを実行する必要があります。主に静的にスケジュールされたジョブ(cronなど)を確実に実行することができるシステムを使用できるため、アウトプロセスがより堅牢になります。

Javascriptでインプロセスアプローチについては、私は起動時に提案し、ポーリングがまだ開いている(ブール値フラグ、日付ではない)ポーリングレコードを表示し、終了日から現在の日付を減算して使用しますsetTimeoutを使用して、将来の関数呼び出し(またはその差が負の場合は直ちに)をスケジュールします。その機能はあなたが必要とすることを何でもすることができます(電子メールの送信、レコードの更新など)最後に行うべきことは、元のレコードを更新して「正常終了」を示すことです。この機能をre-entrantにしたい場合は、プロセスが途中で終了した場合、次回の起動時には、過去の締め切り日が「正常終了」フラグがないポーリングのレコードが表示され、やり直してください。

+0

答えをありがとう。 Javascriptでリエントラント関数を作成することについての読書に関する提案はありますか? –

+0

@EdsonBuenoはそれについて一般的に読んでいますが、それに関する特定の言語に特段のことはありません。 –

関連する問題