JeuWeb - Crée ton jeu par navigateur
Forum lu/non lu - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Forum lu/non lu (/showthread.php?tid=3459)

Pages : 1 2


RE: Forum lu/non lu - Melimelo - 21-12-2008

Pourtant c'est celle utilisé partout ...

sauf sur mybb où il applique une solution pourave avec des cookies et qui fonctionne absolument pas Big Grin


RE: Forum lu/non lu - Amrac - 21-08-2010

Je remonte ce vieux sujet, mais la question est toujours d'actualité.

J'ai une solution qui permet de limiter grandement les enregistrements.

En bref, lorsqu'on ajoute un message, on ne fait absolument aucun système de lu/non lu (donc pas de milliers d'insertions).

Je gère les choses du coté utilisateurs. Pour chaque membre, j'enregistre sa date de dernière visite.

Lorsqu'il se connecte, je sélectionne les sujets (topics) qui on était créé ou modifié depuis sa dernière connection, et j'enregistre dans une table l'id du membre et l'id du topic. Cela correspond à la table des "non lus".

Lorsque le membre consulte un topic, je supprime l'entrée correspondante de la table des "non-lu".

A cela j'ajoute le choix de considérer comme lu tout les sujets non modifié depuis plus de 30 jours. J'ai parcourut pas mal de forum, cela me semble être un choix optimal. (Je développe le pourquoi du comment si vous souhaitez).

J'ajoute donc une tache cron effectuée chaque nuit: Je sélectionne les ID des topics venant d'avoir 30 jours d'inactivités et les retires de la table "non lu".

En terme de performances:
-Aucune requête lourde à l'insertion d'un message
-Aucun soucis au fait d'avoir des milliers de membres inactifs (1 membre inactif = 0 requête)
-Aucun soucis a stocker des millions de messages vieux de plusieurs années (1 topics vieux de plus de 30 jours = 0 requête)
-Une seul requête de type delete sur la table "non lu" a la lecture d'un sujet. (Très rapide avec les index)
-A la connexion d'un joueur, une requête pour sélectionner les ID des topics créer/modifier depuis sa dernière connexion et 1 requête pour l'insertion multiple dans la table "non lu".
-Le cronjob n'as pas de soucis de lenteur puisqu'il est effectué tout les jours, il ne doit donc traiter que les topics d'une journée à la fois.

Les membres actifs n'auront que très peu de requêtes par rapports au système lu/non lu. Seul les très peu actifs feront un peu plus de requêtes, mais cela reste raisonnable.