-1

ユーザーがブラウザを閉じたときに、データベースで MySQL クエリを実行する必要があります。ユーザーがデータベース フィールドにログインすると、log-gin_status が 1 に設定され、ユーザーがログアウトすると、log-gin_status が に設定されるアプリケーションを開発しています。 0.しかし、ユーザーがログインしてもログアウトせず、ブラウザを閉じるだけの場合はどうすればよいですか。

4

5 に答える 5

1

ブラウザーがいつ閉じられるかを確実に検出する方法はありません。したがって、ブラウザを閉じたときにデータベースを確実に操作することはできません。そのため、ブラウザーが閉じたことを検出できなかった状況に対する回避策が必要です。この回避策を、ブラウザが閉じたときに意図したことを行うための推奨される方法にし、ブラウザが閉じたときに何かをする必要があるという要件を削除します。

于 2013-08-03T11:16:09.997 に答える
1

これを試して

$(window).unload( function () { alert("AJAX function to do the required job"); } );
于 2013-08-03T11:22:16.813 に答える
0

本当に困ったらこの方法を試してみてください!

次のような列をユーザーテーブルに追加します。

`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/

于 2013-08-03T15:27:50.080 に答える
0

イベントをサーバーに送信するようなイベントを使用できますonunloadが、このイベントが常に送信されるとは限りません。個人的には、ユーザーが最後にアクティブだった瞬間を追跡し、その最後のアクティブなタイムスタンプに基づいてオンラインかどうかを判断する方がよいと思います。この最大タイムアウトの長さは、サイトによって異なります。

于 2013-08-03T11:13:06.377 に答える