2009-01-22 17 views
5

En el desbordamiento de pila, la página de perfil muestra una propiedad "última vez que se ve". Esto no parece actualizarse en cada vista de página (por razones de rendimiento, obviamente). ¿Cómo lo implementarías en una aplicación web de tráfico pesado? ¿Lo actualizarías solo en ciertas páginas? ¿O almacenar en caché la última vez que registró la última visita del usuario y esperar un tiempo específico antes de actualizar la base de datos? ¿O algo completamente diferente?¿Cómo implementaría una característica de "última vez que se viera" para los usuarios?

Respuesta

2

Me gustaría utilizar una SESIÓN. Y solo configúralo como la primera visita de la sesión. También lo restablece cada hora más o menos si la gente deja el navegador abierto. En php algo como esto:

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

algo así, pero luego con OO y no hacer lo mismo dos veces.

5

En un sitio de mucho tráfico como Stack Overflow, solo actualizaría la variable "last seen" cuando un usuario realmente hace algo. Al acecho y leer preguntas y respuestas no debe contar como un usuario "visto" por el sistema. Hacer y responder preguntas o votarlas debe ser acciones que se actualizan cuando el usuario fue visto por última vez.

No hablaré sobre los detalles de implementación porque eso ya está cubierto por otras respuestas (y probablemente me equivocaría).

0

Considere utilizar el patrón de diseño "Comando" para esto. Le ayudará de dos maneras: responda la pregunta en cuestión y también implemente una función de "deshacer/rehacer". Debe mantener una lista de objetos de comando diseñados según ese patrón.

Cuestiones relacionadas