ユーザーがブラウザを閉じたときに、データベースで MySQL クエリを実行する必要があります。ユーザーがデータベース フィールドにログインすると、log-gin_status が 1 に設定され、ユーザーがログアウトすると、log-gin_status が に設定されるアプリケーションを開発しています。 0.しかし、ユーザーがログインしてもログアウトせず、ブラウザを閉じるだけの場合はどうすればよいですか。
5 に答える
ブラウザーがいつ閉じられるかを確実に検出する方法はありません。したがって、ブラウザを閉じたときにデータベースを確実に操作することはできません。そのため、ブラウザーが閉じたことを検出できなかった状況に対する回避策が必要です。この回避策を、ブラウザが閉じたときに意図したことを行うための推奨される方法にし、ブラウザが閉じたときに何かをする必要があるという要件を削除します。
これを試して
$(window).unload( function () { alert("AJAX function to do the required job"); } );
本当に困ったらこの方法を試してみてください!
次のような列をユーザーテーブルに追加します。
`live_last_update` TIMESTAMP NULL DEFAULT NULL
ログインしているユーザーcurrent timestamp
ごとにアプリ内のフィールドを更新します。(e.g. 5 minutes)
ユーザーが手動でログアウトした場合は、 に設定しnull
ます。ユーザーがオンラインかどうかを示します。
cron job
バックグラウンドで実行するタスクをスケジュールする機能を持つスクリプトを使用してください! cron ジョブのセッションにアクセスできないため(なぜですか?)live_last_update
、最後にフィールドが更新されなかったすべてのユーザー レコードのフィールドをチェックするスクリプトを記述します5 minutes
。したがって、ログアウトしていないユーザーがわかります。また、必要に応じて設定できnull
ます。
cron job
特別な時間を実行するように設定します。
以下は、cron ジョブの使用方法に関する優れたチュートリアルです。
http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/
イベントをサーバーに送信するようなイベントを使用できますonunload
が、このイベントが常に送信されるとは限りません。個人的には、ユーザーが最後にアクティブだった瞬間を追跡し、その最後のアクティブなタイムスタンプに基づいてオンラインかどうかを判断する方がよいと思います。この最大タイムアウトの長さは、サイトによって異なります。