これを達成する方法は複数あります。
DB内のセッションは一方向です。あなたのサイトに何人の匿名ユーザーがいるかを知るために使用することもできます。
あなたが探しているタスクを達成するもう1つの方法は、ユーザーテーブルのユーザーに、「logged_in」という新しいフィールドでフラグを立てることです。
loginメソッドが実行されると、フラグはlogoutメソッドと同様にそれに応じて変更されます。次に、ユーザーがログインして現在ログインしている人の数を確認し、それに応じて行動しようとするたびにSELECTクエリを実行します。
「ログイン」または「ログアウト」メソッドが実行されたことに応じて、ログインしたユーザーの合計数、加算および減算の数をDBにカウントする方がよい場合があります。この方法では、特定のユーザーが特定の時点でログインしているかどうかを知ることはできませんが、少なくとも必要なものは全体の番号になります。この方法は、ユーザーテーブル全体でSELECTクエリを実行する必要がないため、DBから特定のフィールドの値を取得してパフォーマンスを向上させることができるため、より優れています。残念なことに、毎回ログアウトしないと、ログイン時間を保存して一定時間後にログアウトしない限り、この方法は役に立ちません。
ユーザーがブラウザを閉じて「ログアウトしない」という問題を解決するには、上記で提案したDB構造の組み合わせで、とにかくセッションを保存することをおすすめします。
出典
2009-06-21 11:01:06
Sev
ここではglobal.asaxをタグとして使用しているので、おそらくSession_StartとSession_Endについて知っていると思いますが、何が問題なのですか?これらのイベントを使用して実装するのは難しくありません。いくつか詳細を教えてください。 – Kobi
しかし、ユーザーがブラウザを閉じるたびにSession_Endイベントが発生しません。 –
セッションがタイムアウトした後にSession_Endが起動しませんでしたか?これは必要に応じて数分に設定することができ、デフォルトは20分です。あなたはまだユーザーの数を取得し、それらを追跡することができます。 – Kobi