2011-07-31 6 views
0

セッションが期限切れになるか、ウィンドウが閉じられる前に、確実に関数を呼び出す方法はありますか?過剰なmysqlクエリを避けるために、私のスクリプトはデータ変数を収集し、PHPの$_SESSION変数で変更し、データベースとのやり取りが必要なときにmysqlの更新を行います。私はこの方法でこのデータを保存しているので、ユーザーがウィンドウを閉じる前、またはセッションが終了する前に、このデータがデータベースにコミットされていることを確実にする信頼できる方法がありますか?ブラウザー上で関数を呼び出す信頼性の高い方法、またはセッションのタイムアウトの前に?

私はphp、javascript、およびjqueryをタグ付けしました。これはどのような方法でも可能です。

追加:申し訳ありませんが、クライアントがJavaScriptを有効にしていると推定しています。私は特にそうではないクライアントには特に気を配らないという独自の状況にあります。

+1

これらのクエリはどのように「過剰」ですか?本当に安全な唯一の方法は、データベースをすぐに更新することです。それ以外の場合はクラッシュしないようにクライアント(ブラウザ)に依存し、javascriptを実行し、一般的には完全に動作する必要があります。あるいは、クライアントからしばらく要求がない場合は、サーバーのバックグラウンドで何かを実行して、すべてを実行する必要があります。いずれにせよ、それは難しいです。 – Flambino

+0

@Flambino質問の量は質問の範囲にはありません。サーバーの潜在的な負荷は可変であるためです。 '$ _SESSION'で情報を処理しなかった場合、各クライアントは1/10秒ごとに3つのクエリを持つ可能性があります。クエリの量が影響を受けていないと仮定します。問題は変わりません。 – Blake

+1

ユーザーのインターネット接続が突然中断したらどうなりますか?私はあなたが完全に信頼できる何かを見つけることは疑う。 – jtbandes

答えて

0

多くの検索/ディスカッションがあります。 setTimeout()メソッドを使用して、定期的にデータをデータベースにコミットします。ユーザーはGoogleドキュメントモデルと同様に、返品時に(データ損失の可能性あり)続けることができます。

関連する問題