Wie schreibe ich "Last Seen" Logik wie in Stack Overflow

8

Ich arbeite an einer Anwendung, die ähnliche Logik wie SO hat, wenn der Benutzer zuletzt gesehen wurde. Ich bin auf ein konzeptionelles Problem gestoßen, von dem ich hoffe, dass einige von euch Gurus mir helfen können.

Alle Aktivitäten werden in einer ActivityLog-Tabelle in der Datenbank protokolliert

Wenn ein angemeldeter Benutzer die Website besucht und eine neue Sitzung erstellt wird, aktualisiere ich das Aktivitätsprotokoll mit der Benutzer-ID und einigen sehr allgemeinen Informationen. Das gleiche passiert, wenn sie einen neuen Datensatz erstellen, ihr Profil aktualisieren usw.

Das Problem, das ich habe, ist das.

Wenn ich das neueste Aktivitätselement verwende, dann navigiere zu meiner persönlichen Account-Seite, die "Zuletzt gesehen" erscheint als 1 Sekunde, weil ich beim Start der Session GERADE die db treffe ... Das ist nicht gut, weil ich will um zu sehen, was ich "zuletzt" dort war, nicht wenn ich da bin "jetzt".

Wenn ich jedoch Skip(1).Take(1) verwende, um den zweiten Datensatz in der Datenbank zu erhalten, wenn jemand anderes mein Profil aufruft, während ich mich "nur" angemeldet habe, werden sie sehen, dass ich etwa eine Woche war vor und nicht heute.

Welche Art von Logik würden Sie verwenden, um Ihren Kuchen zu haben und es auch zu essen?

Ich benutze ASP.NET MVC2 und Linq zu SQL, aber ich denke, dass diese Frage mehr sprachunabhängig ist.

    
Chase Florell 06.07.2010, 17:48
quelle

3 Antworten

3

Es klingt, als könnten Sie nur den zweitletzten Datensatz für den aktuellen Benutzer anzeigen, und für alle anderen Benutzer den aktuellsten.

    
Brian MacKay 06.07.2010, 17:53
quelle
3

Was ich tun würde (um einfach eine große Logikschleife zu vermeiden) wäre, zwei Felder hinzuzufügen. current_seen und last_seen . Beim Login verschiebe current_seen auf last_seen und setze current_seen auf den aktuellen Zeitstempel. Zeigen Sie dann last_seen als "Zuletzt gesehen am XX / XX / XXX" an.

    
Josh K 06.07.2010 17:52
quelle
2

Ein Ort zum Nachschlagen ist der Quellcode von OSQA (das Open-Source-System von q & amp; a) -

Ссылка

Und ja, es sieht StackOverflow sehr ähnlich (um es gelinde auszudrücken).

    
Kris Krause 06.07.2010 17:52
quelle

Tags und Links