2011-12-13 14 views
5

私は最近アプリケーションを終了しましたが、大きな問題があります。一度に1人のユーザーしかアクセスできないようにする必要があります。毎回すべてのユーザーがアクセスできるインデックスページがあり、「開始」ボタンがあります。ユーザーが開始をクリックすると、アプリケーションはロックされ、ユーザーが終了するまで待機する必要があります。ユーザーがタブ/ブラウザを閉じると、アプリケーションは自動的にロックを解除する必要があります。各ユーザーは私のアプリを使用するために5分を持っています。 私は問題を部分的に解決しましたが、それでも正常に動作しません。あらゆるサイトで、5秒ごとにサーバー上の "extend.php"ファイル($ .get()関数)をトリガーするjqueryスクリプトを設定しました。 phpファイルはtime.txtファイルを変更します(time()+ 5)し、intexサイトのスクリプトは(time()> time.txtの内容)をチェックします。そのため、使用がタブ/ブラウザを閉じると、アプリケーションにアクセスできるようになります。明らかに、私のアプリもセッションに基づいています(ユーザーがブラウザを閉じるとアクセスできなくなります)。 一部のコンピュータでは、単に動作しません(jqueryはextend.phpファイルをトリガーしないと思われ、いつでも私のアプリにアクセスできます)。 私の質問は次のとおりです。私の問題を解決する他の方法がありますか?ユーザーが現在オンラインかどうか確認する(ライブ)

DESCRは厄介かもしれないが、私はstrightforwardすべてを記述したかった;)

よろしく。

+1

これは動作していないOS /ブラウザです。そこから始めて、問題のある人に共通点があるかどうかを確認してください。あなたは本当にブラウザの問題であるコードの問題を追いかけるかもしれません。 – Brian

+0

あなたはそれの音によって原則的に正しいことをしています。まず最初に行うことは、動作しないマシンに乗って、目に見えるブラウザのエラーを投げているかどうかを確認することです。 – graphicdivine

答えて

0

ユーザがオンラインのときにLOCKをmysqlテーブルに配置し、オフラインのときにロックを解除することができます。

唯一の問題は、コードのロックを忘れた場合です。

+0

私は彼が解決しようとしていた問題だと思います... –

1

あなたの方法は問題ありません。うまくいくはずです。はい、node.js、または他のサーバー側のjavascriptを使用して同じことを行うことはできますが、スクリプトをトリガーすることははるかに簡単な解決策です。あなたは実際には、それが動作していないマシンをさらに調べるためにあなたの時間に集中すべきです。

2

jQueryのアンロード機能を使用して、閉じるボタンをクリックすると、Webブラウザはユーザが終了する前に最後の1行のスクリプトを実行するようにしてください。例:

$(window).unload(function(){ 

    "your php function to unlock the app here" 

}); 

希望します。

1

5分に制限されている場合は、5分後に期限切れになるように設定します。 jqueryのカウンタを使用して、どれくらいの時間が利用可能かを示すことができます。有効期限に達すると、ユーザーに通知します。時間が経過するか、ユーザーがアプリケーションの更新を完了するとtime.txtをtime()に変更しますが、通常はアプリケーションがアクセス可能なときに処理します。ポーリングなし、1回の更新。

関連する問題