Hilo leído / no leído

Stricken

Estoy desarrollando un foro utilizando Laravel y he llegado al punto de marcar los threads como leídos / no leídos. De momento lo que hago es crear una tabla forum_tracking en la que relaciono el usuario, thread y le meto un timestamp con la última visita, hasta ahí todo bien.

La pregunta es, ¿hasta qué punto es óptimo? He leído unos 20 posts que hablan sobre el tema en Stackoverflow y las soluciones que plantean, a parte de la clásica, son:

  • NoSQL
  • Client-side
  • Marcar como no leídos todos los creados desde el último login (así lo hace phpBB)
  • Redis (esta es la que más me tira)

En caso de mantener el sistema actual iría eliminando las entradas una vez pasados X días.

¿Qué se os ocurre? ¿Hasta qué punto puede afectar la implementación actual al rendimiento utilizando discos SSD? Los servidores de ahora no son como los de antes y tampoco espero millones de threads.

BH99

#1 Se me acaba de ocurrir, quizás me esté colando y te parezca una gilipollez pero bueno.

Porque no guardas la idPost del ultimo post de ese thread al que entraste? Si numCampo< idPost ha aumentado, te faltan post por leer en ese thread, sino pues a volar! XD
Por defecto numCampo=0, y al meterte en el thread pues cambia a numCampo=idPost

1 respuesta
Stricken

#2 Lo que propones es algo muy similar a lo que tengo ahora, lo mismo hasta tendría que hacer alguna lectura más a la BBDD.

Ahora mismo tengo una tabla forum_threads con un campo last_activity que se actualiza cada vez que se añade un registro a forum_replies, cuando el usuario se va a la lista de hilos y el last_activity del thread es < al registro en forum_tracking lo marca como no leído.

RaymaN

Yo lo haría con Redis. Creas una key "read:{user_id}" y guardas un array asociativo {thread_id} => {post_id}.

1 respuesta
Stricken

#4 ea, así lo he hecho y va de muerte :D

Usuarios habituales

  • Stricken
  • RaymaN
  • BH99