2009-01-22 7 views
5

W przepełnieniu stosu na stronie profilu wyświetlana jest właściwość "ostatnio widziana". Wydaje się, że nie jest ono aktualizowane na każdym widoku strony (oczywiście ze względu na wydajność). Jak zaimplementowałbyś to w aplikacji internetowej o dużym natężeniu ruchu? Czy zaktualizowałbyś go tylko na niektórych stronach? Lub buforować ostatni raz, kiedy zalogowałeś się na ostatnią wizytę użytkownika i odczekać określoną ilość czasu przed aktualizacją bazy danych? Czy coś zupełnie innego?Jak zaimplementować funkcję "ostatnio widzianą" dla użytkowników?

Odpowiedz

2

Posłużę się SESJĄ. I ustaw ją tylko na pierwszą wizytę w sesji. Także resetowanie go co godzinę, jeśli ludzie opuszczają przeglądarkę. W php coś takiego:

if(!isset(!_SESSION['lastSeen'])){ 
$_SESSION['lastSeen'] = time(); 
updateLastSeenInDatabaseOrSomething(); 
} 
else{ 
if($_SESSION['lastSeen'] < time() + 2 * 60 * 60){ //2 hours 
    $_SESSION['lastSeen'] = time(); 
    updateLastSeenInDatabaseOrSomething(); 
} 
} 

Coś takiego, ale potem z OO i nie robi tego samego dwa razy.

5

Na stronie o dużym natężeniu ruchu, takiej jak przepełnienie stosu, zaktualizowałbym zmienną "ostatnio widzianą" tylko wtedy, gdy użytkownik faktycznie ma coś, co robi. Czai się i czytając pytania i odpowiedzi nie powinno się liczyć, jako że użytkownik jest "widziany" przez system. Zadawanie i odpowiadanie na pytania lub głosowanie nad nimi powinno być działaniami, które aktualizują się, gdy użytkownik jest ostatnio widziany.

Nie będę mówił o szczegółach implementacji, ponieważ jest już objęty innymi odpowiedziami (i prawdopodobnie źle to zrozumiałbym).

0

Rozważ użycie wzoru projektu "Rozkaz" dla tego. Pomoże ci to na dwa sposoby - odpowiedz na pytanie i zastosuj funkcję "cofnij/ponów". Powinieneś utrzymywać listę obiektów poleceń zaprojektowanych według tego wzoru.

Powiązane problemy