2008-11-27 11 views
2

Par exemple, prenons le format d'un forum, où nous avons plusieurs utilisateurs et plusieurs threads. Supposons que ce forum veuille savoir quels utilisateurs ont lu quels threads et, par exemple, utilisent ces informations pour identifier les threads qui ne sont pas lus lors de l'affichage de la liste des threads.Quel est le moyen le plus efficace de mémoriser le statut de lecture/non lu sur plusieurs éléments?

La seule solution que je peux imaginer est quelque chose qui supprime un enregistrement dans la base de données chaque fois qu'un utilisateur visite un thread. Je suppose qu'il pourrait y avoir un bouton «marquer tout comme lu», qui pourrait employer un horodatage pour aider à réduire l'étalement dans la base de données ... indépendamment de ceci n'est pas une solution qui m'impressionne. J'ai le sentiment qu'il me manque quelque chose ici ... peut-être que le matin de Thanksgiving n'est pas le moment de réfléchir à ses problèmes de programmation.

Existe-t-il une meilleure solution pour cela? Des idées?

Répondre

1
  1. Laisser un enregistrement dans la base de données pour chaque combinaison thread utilisateur
  2. Ou stocker ces informations dans un fichier - un fichier par l'utilisateur. Il peut être nécessaire de le verrouiller/déverrouiller dans le cas où plusieurs connexions du même utilisateur sont autorisées.
2

L'utilisation d'un enregistrement de base de données me semble la plus prometteuse. Il va générer une table avec des millions de lignes très rapidement si vous avez un forum actif mais ce serait la solution la plus simple à mettre en place. Cela donnera beaucoup de flexibilité pour interroger les utilisateurs qui lisent quoi.

0

Je pense que j'ai vu quelque part, peut-être forum phpbb? de toute façon

il y avait une table avec userid, ThreadID, dernière-datetime lu (laissez nommez userAsRead)

il comparerait le dernier message fait dans ce threadid vs dernière lecture datetime

pour la marque que tous lu, il était un champ dans la usertable en utilisant la même logique que ci-dessus

ne pas oublier d'effacer la userAsRead si « marquer comme tous lu » est utilisé, sauverait DB espace

Questions connexes