Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster -> FAQ BDD, Cours BDD et Sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 18/01/2010, 23h19   #1 (permalink)
Invité de passage
 
Date d'inscription: octobre 2009
Messages: 3
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 !

Dernière modification par sabotage ; 19/01/2010 à 08h04.
apache35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/01/2010, 09h38   #2 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 63
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'.
noreaga10 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/01/2010, 15h57   #3 (permalink)
Invité de passage
 
Date d'inscription: octobre 2009
Messages: 3
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 ?
apache35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/01/2010, 17h30   #4 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 63
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 :
 
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.
noreaga10 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/01/2010, 18h58   #5 (permalink)
Invité de passage
 
Date d'inscription: octobre 2009
Messages: 3
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.
apache35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/01/2010, 08h56   #6 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2009
Messages: 63
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.

Je viens de trouver un super article:
http://www.dbnewz.com/2008/06/27/les...ts-efficacite/
noreaga10 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/01/2010, 20h02   #7 (permalink)
Rédacteur
 
Date d'inscription: décembre 2006
Messages: 177
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.
__________________
Prestataires, inscrivez vous dans l'annuaire e-commerce des prestataires
max-mag est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 17h23.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.