5

次のパラメータをキャプチャしたいと思います。

lastAccessedTime - ユーザーが最後にサイトにアクセスした時間 (通常はログイン プロセス中に表示されます)

isOnline - ユーザーがオンラインかどうかを表すブール値。

a. これらの変数をユーザー テーブル自体の一部として持つことは理にかなっているでしょうか、それとも別のユーザー監査テーブルを介して処理する必要があるでしょうか?

b. 特定の SOAP / REST API が API 呼び出しを介して機能を公開している場合、上記のパラメーターをどのように追跡しますか (たとえば、そのような場合に lastAccessedTime を変更しますか? ユーザーがポータルにログインすると混乱する可能性があります。isOnline ビットも意味がありません)。ユーザーが API 呼び出しを行う場合)。

4

4 に答える 4

7

ユーザーにリンクするセッション テーブルを作成します。isOnline フィールドの代わりに、過去 x 時間以内にアクティブだったセッションのクエリを実行します。また、リクエストが API を介して送信された場合でも、リクエストごとにそのセッション フィールドを更新します。

これにより、セッション テーブルの整理に多少のオーバーヘッドが発生しますが、整理できない非ユーザー情報でユーザー テーブルが乱雑になることもありません。

于 2009-12-15T06:38:16.877 に答える
5

lastTimeActive を user テーブルのフィールドにし、ページ アクセスごとに更新します。「オンライン ユーザー」リストは、lastTimeActive が 5 分以内のすべてのユーザーです。

于 2009-12-15T06:36:00.013 に答える
2

別のテーブル (userid、lastTimeActive) を作成し、頻繁にテーブルを更新してチェックします。

// update
update onlineusers set lastTimeActive = getdate() where userid=1234

// check
delete from onlineusers where lastTimeActive < dateadd(minute,-5,getdate())
于 2009-12-15T06:41:18.940 に答える