Tengo un sitio comunitario bastante complejo (en php/mysql) con una cantidad de "cosas" que los usuarios registrados pueden "mirar".¿Cómo creo el sistema "Watch"? Buscando las mejores prácticas
"cosas" son: Mensajes, comentarios, actualizaciones de eventos, cambios de estado de usuario, etc. Por lo menos 10 tipos diferentes de "cosas" están disponibles y un usuario puede ver "cosas" de cualquier otro usuario (Piense facebook)
"Ver" significa: un usuario puede ver cualquier "cosa" y ver un feed de todas las actualizaciones/adiciones a cada "cosa" a través de todo tipo de "cosas".
he construido una aplicación similar con muchos menos "cosas" que pueden ser vistos y mi configuración es básicamente esto:
'relojes' campos de la tabla: ID, ID de usuario, itemId [id en la tabla extranjera] , itemClass [ID de referencia de la tabla extranjera]
Un usuario podría agregar un 'reloj', se creó un registro en la tabla 'relojes' y luego sondearíamos esa tabla (y la almacenaríamos en caché) para que navegaran nosotros notaba (en la interfaz de usuario) si ya estaban viendo un elemento en particular o no, MÁS podían ver y administrar una lista de todo el sistema que estaban viendo. Bastante simple.
Entonces, (después de esa larga introducción), este sitio de comunidad que estamos construyendo necesitará escalar más dramáticamente. Miles de usuarios verán cientos de "cosas" y tendremos que sondear no solo la tabla de "relojes" per se, sino también cada mesa extranjera, unirnos para obtener los detalles que llenen el feed de visualización de cada usuario.
Si no está seguro de lo que quiero decir, solo piense en el feed de amigos de Facebook que tiene en su página de inicio de Facebook. ¿Cómo se actualiza eso sin ejecutar toneladas de consultas?
He estado trabajando en el mismo tema durante al menos 6 meses, no he progresado en la búsqueda de una "buena" solución pero – JasonDavis
mejor describo lo que se puede ver. Usted dice "cosas": publicaciones, comentarios, etc. ¿Alguien mira todas las publicaciones, o solo ciertas publicaciones, todos los comentarios o solo ciertos comentarios? cómo almacenar la información de este reloj será fundamental, pero necesito entenderlo mejor antes de poder hacer una recomendación. –
@KM - Buena pregunta. Aquí está el desglose simple (espero): si observas a un usuario, recibirás una notificación de todas las publicaciones, comentarios, imágenes, cambios de estado y comentarios sobre los cambios de estado de ese usuario. Si mira una publicación o una imagen, recibirá una notificación de todos los comentarios realizados a esa publicación o imagen. Si mira un tema de noticias, recibirá una notificación de todas las publicaciones dentro de ese tema de noticias (no comentarios). – phirschybar