IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

savez-vous comment créer un systeme de lu / non lu optimisé ?


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut savez-vous comment créer un systeme de lu / non lu optimisé ?
    Bonsoir,

    je dispose d'un forum archaïque (en terme d'optimisation et de fonctionnalités) créer il y a 2 ans, aujourd'hui j'ai en moyenne (j'arrondis les moyennes) 50 membres connectés, 1700 nouveaux messages (hors MP) et 600 sujets uniques vus (par des membres connectés) par jour.

    Mes membres se plaignent de la lenteur de "la bête" comme certains l'appellent, la page d'accueil pour un membre connecté peut mettre jusqu'à 6 secondes pour s'afficher. Dans le but d'offrir un forum plus performant à mes forumeurs je réfléchis à un nouveau forum avec plus de fonctionnalités et plus optimisé. Dans ma réflexion je bloque sur le système de lu / non lu, ce dernier génère autant de lignes dans la table que de sujet uniques vu, ma table fait plusieurs ko.

    A vrai dire j'ai déjà réussi (sur le papier) à optimiser l'ensemble du forum, hors mis ce système de lu / non lu, je cherche donc des idées pour créer un systeme plus optimisé, j'y ai réfléchis durant un certain temps et franchement je me demande même si il est possible de faire autrement qu'avec la méthode utiliser dans ce tutoriel ^^

    Merci d'avance !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Par défaut
    Bonjour,

    Reprend moi si j'ai mal compris.
    Pour schématiser tu as une table 'article' (id, nom, contenu, etc...) et une table 'stat_article' avec les champs suivants : id_article, id_user et la date de visualisation.

    Si tu souhaite avoir le détail précis des visualisation, ta méthode semble être la bonne.
    Si tu souhaite juste connaître le nombre de fois qu'un article est lu, rajoute un champs 'nb_view' par exemple à la table article, que tu incrémente à chaque lecture de l'article.

    Maintenant une bdd qui fait quelques ko c'est pas énorme.
    Les lenteurs peut-être d'un problème d'indexation des champs.
    Vois la commande mysql 'describe'.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Bonjour noreaga,

    oui la table se présente sous cette forme :
    id topic | id posteur | date de visualisation

    Aucun des champs n'est indexé, à vrais dire je ne sais pas comment me servir des index, j'ai pourtant lu un tutoriel à ce sujet.

    Dans le cas de cette table, une clé primaire sur id topic suffirait ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Par défaut
    Si aucun des champs ne sont indexés en effet tu devrais gagner du temps sur tes requêtes, une fois les colonnes indexées.

    Pour la syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE tbl_name ADD INDEX index_name (column);
    Tu fais cela pour les deux colonnes user_id et artcle_id de ta table stat_article, et ça devrait rouler.
    Pour le index_name, je crois que ça n'a pas d'importance, mets le même nom que tes colonnes.

    Dis moi ce que ça donne.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Merci noreaga !

    J'avais cru comprendre qu'il existait plusieurs sortent d'index, c'est faux ?

    J'avais prévu de faire une mise à jour sur mon site demain matin, je modifiai la bdd pour ajouter les index en même temps, je te dirai ce que ça donne.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Par défaut
    En effet il existe plusieurs sortent d'index.

    Ce ne seront clairement pas des primary key, car tu auras forcément des doublons dans tes deux colonnes.
    Ce sera des type KEY, je pense.

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 467
    Par défaut
    Tu utilises quoi comme pilote de base de données ?
    Je te conseille d'utiliser mysqli, c'est plus rapide et exploite mieux la mémoire que mysql. C'est assez facile de changer si les fonctions de connexion sont groupées.

    Quand au index, attention, les lecteurs sont plus rapides, mais pas les écritures.

    Si c'est sur un dédié, il peut être utile de vérifier le cache MySQL.
    Si des sessions sont stockées en base, passer en MEMORY peut-être intéressant.

    Voilà quelques pistes, bon courage.

Discussions similaires

  1. Comment créer une liste de dates non consécutives
    Par Mayouhou dans le forum Excel
    Réponses: 2
    Dernier message: 13/12/2011, 20h46
  2. Réponses: 6
    Dernier message: 15/04/2009, 21h17
  3. Savez vous comment ils font?
    Par floshard dans le forum Flash
    Réponses: 3
    Dernier message: 04/12/2006, 10h36
  4. Réponses: 4
    Dernier message: 26/01/2006, 16h13
  5. savez vous comment tapez un astérisque numéroté
    Par rauzada dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 07/10/2004, 23h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo