0

JavaScriptで実装されたタイマー付きのオンラインクイズアプリを作っています。万が一、停電でブラウザが閉じてしまった場合は、ブラウザを閉じた時点からタイマーを再開する予定です。現在、PHP / AJAXを使用して、クイズの最後にのみデータベースに時間を記録しています。ユーザーがブラウザを閉じた正確な時刻から再開するにはどうすればよいですか?

4

2 に答える 2

0

停電の問題は、停電の前に通知されないため、停電時に状態を保存する機会がないことです。

したがって、電源が切れたときを知る唯一の方法は、N時間間隔ごとに状態を継続的に保存することです。その後、電源が切れてから復旧すると、最後に保存された状態を確認できます。完璧ではありませんが、できる限りのことです。

状態を保存するための3つのオプションは次のとおりです。

  1. 毎分(または実行時間数を含む一定期間)Cookieを設定します。
  2. 同じ状態をローカルストレージ(新しいブラウザ)に保存します。
  3. 通常のajax呼び出し(数分ごと)を使用して、サーバーへの実行時間の「自動保存」の形式を実行します。

オプション1と2の利点は、すべてクライアント側であるため、保存が迅速で、サーバーに負荷がかからないことです。オプション1と2の欠点は、システムをゲームしようとしているクライアントによって操作される可能性があることです。

オプション1と2のローカル状態でさえ停電時に適切に保存されない可能性があるという小さな危険がありますが、ほとんどのブラウザは保存時にこれをディスクに保持するため、後でブラウザがクラッシュしても信頼できます。

于 2012-09-03T21:14:58.893 に答える
0

ウィンドウアンロードイベントをサブスクライブすることはできますが、これが電源障害のシャットダウン時に発生するかどうかは100%わかりません。

おそらく、より良い解決策は、クイズの過程でユーザーをポーリングすることです。setIntervalこれにより、1000ミリ秒ごとに(または頻繁に)起動し、Cookieを設定/更新できます。

于 2012-09-03T20:26:12.460 に答える