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 :

Alleger du php et des requetes complexes


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Par défaut Alleger du php et des requetes complexes
    Bonjour,

    Je développe un site en php avec beaucoup de requêtes sql avec des group by et des requêtes du genre assez lourdes. Pour l'instant il n'y a pas beaucoup de lignes dans la base, donc je ne peux pas réellement me rendre compte de la lourdeur du code.

    En gros, un utilisateur s'inscrit. Il a une sorte de blog qu'il peut alors remplir à sa guise. Il y a donc une table 'sujets' qui a une quinzaine de champs. Sur le blog de l'utilisateur, il y a des statistiques qui sont calculer depuis les lignes insérer dans la table 'sujets', le tout à chaque fois en direct.

    Imaginons avec 100.000 enregistrements, rien que ca déjà. Cela va-t-il se ressentir et faire éventuellement tomber le serveur ou bien mettre un temps incroyable au loading ?

    Faut-il impérativement que je fasses une table 'stats' qui enregistre sous forme temporaire les statistiques selon les sujets, les points de l'utilisateur ?

    Honnêtement, ça me plait bien que ca soit un calcul en direct. Ça évite des tables supplémentaires et le calcul est forcement juste car ça s'appuie sur les enregistrements de la base.

    Savez-vous s'il est possible de simuler des centaines de milliers d'enregistrements afin de tester ce que ça peut donner si la base est lourde ?

    Je ne suis pas encore assez calé en php pour avoir toutes ces notions d'allégement du code. J'ai fait tout mon possible pour que les select ne pointe que sur ce qui est utile. C'est déjà ca.

    Vous connaissez peu-être un tutoriel sur les choses importantes à savoir pour éviter l'overload d'un serveur à cause d'un mauvais code ...

    Merci par avance pour vos infos.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Pour la performance, il est difficile de te répondre sans savoir précisément ce que tu fais.
    Tu peux déjà extrapoler ton resultat en mesurant précisément ton temps de traitement actuel sur quelques lignes.
    Il faut se méfier d'un traitement qui l'air instantané : 0,02s sur 10 lignes, génial c'est super rapide ... mais ca fait 20s d'attente quand on a 10 000 lignes à traiter.

    Tu peux toujours bourrer ta base pour voir réellement ce que donne.

    Par rapport aux calculs en direct, on peut voir le probleme dans l'autre sens : est-il utile d'avoir le resultat en temps réel ?
    Ton utilisateur a t'il besoin d'un affichage rapide (résultat mis en cache) ou d'un résultat précis (calcul en temps réel).
    Si ton utilisateur vient une fois par semaine, a t-il besoin du resultat calculé au moment ou il se connecte ou du resultat calculé la veille ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Bonjour,

    Pour la performance, il est difficile de te répondre sans savoir précisément ce que tu fais.
    Tu peux déjà extrapoler ton resultat en mesurant précisément ton temps de traitement actuel sur quelques lignes.
    Il faut se méfier d'un traitement qui l'air instantané : 0,02s sur 10 lignes, génial c'est super rapide ... mais ca fait 20s d'attente quand on a 10 000 lignes à traiter.

    Tu peux toujours bourrer ta base pour voir réellement ce que donne.

    Par rapport aux calculs en direct, on peut voir le probleme dans l'autre sens : est-il utile d'avoir le resultat en temps réel ?
    Ton utilisateur a t'il besoin d'un affichage rapide (résultat mis en cache) ou d'un résultat précis (calcul en temps réel).
    Si ton utilisateur vient une fois par semaine, a t-il besoin du resultat calculé au moment ou il se connecte ou du resultat calculé la veille ?
    Merci pour vos réponses.

    Y'a t'il une solution simple et efficace pour insérer des dizaines de milliers de lignes d'un coup dans une base, pour faire des test ?

    Evidemment, l'ideal c'est que l'utilisateur puisse avoir les resultats en direct. Je vais déjà voir ce que ca donne avec beaucoup de lignes dans la table. Si c'est pas trop lourd, je laisserais en direct, sinon je ferais une sorte de cache.

    J'ai compiler le module php5 avec phpeaccelerator qui fait lui-même du cache. Qu'est ce que vous pensez de ce module ? Est-ce que ca m'évite beaucoup de charge ou au contraire c'est plutot inutile ? J'ai l'impression que ca fonctionne bien moi ...

  4. #4
    mon_nom_est_personne
    Invité(e)
    Par défaut
    Deja, tu utilise quel type de bdd ?
    on va supposer que c'est mysql
    alors je vois deux choses pour optimiser tout ca:
    Un les stored procedure. au lieu de l'ecrir en php tu ecrit un procedure mysql c'est bien plus rapide. Je fait de calcule de geolocalisation sur des table de 10000 lignes et ca prend du 0.05s
    Apres comme l'a dit sabotage, est-ce que la connection direct a la base de donne est necessaire. Dans ce cas tu as tout interet a travail avec soit des pages static genere par des bash, des systeme de fichier etc.. et de symchroniser le tout toute les heures ou les 2 heures.

Discussions similaires

  1. Faire une requete complexe avec des conditions
    Par student_php dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2010, 10h09
  2. Traitement des requetes PHP longues par un serveur mutualisé
    Par lysandre dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 15/04/2008, 23h05
  3. performance MySql avec des requetes complexes
    Par khadir dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/12/2007, 16h40
  4. Problème pour écrire des requetes mysql complexes
    Par truemistress dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/02/2007, 18h29
  5. [PHP/MySql] requete complexe
    Par jfrag dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/09/2006, 10h16

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