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

Langage PHP Discussion :

Améliorer la rapidité


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut Améliorer la rapidité
    Bonjour,

    Voila j'ai un site fonctionnel, mais le probleme c'est qu'il est lent à charger.
    On m'a dis que cela venait de la qualité de mon code, ce qui est tout à fait possible car il a été créer a la hate (donc trop de rapidité tu la qualité). De plus il s'agit de mon 1er réel projet en php/mysql.

    J'aimerai donc savoir quels sont les petites astuces pour améliorer les échanges avec le serveur, le chargement par le client etc... si vous en connaissez.

    Une tite question aussi :
    Le fait d'avoir une page (de code) énorme est-il plu lent à compiler par le serveur et à charger par le client, que si le code est fractionné dans plusieurs fichiers et resoudé avec des include; ou pas?

    Merci
    Linux because rebooting is just for adding medias

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Bonjour
    ce qui ralenti le temps de chargement est souvent lié au traitement dans ton script
    De nombreuse boucle parcourrant des array avec des condition de sortie douteuse peut etre un probleme
    une requete qui n'est pas optimiser peut prendre bcp de temps d'execution
    Les images(si t'en as) jouer avec la qualité pour diminuer la grosseur de ces dernières
    Éliminer le superflux ne fait pas de tord non plus

    Pour ce qui est de séparer en plusieur fragement segmenter, je ne sais pas si ca optimise la vitesse, mais si c'est dans le but de la réutilisation de bout de code ca peut etre pratique sinon, ben ca devient lourd en maintenant quand il faut que tu joues dans 15 fichier différent pour trouver qu'est ce qui ne va pas
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    En faites il s'agit de ma page d'acceuil, et c vrai qu'il y a pas mal de boucle sur des array provenant de mysql, par contre je pense pas que ça vienne des conditions (cependant je le note pour plus tard), car c'est toujours while($don=mysql_fetch_array... ; et il y a au max 9 donnée par tableau.

    Quesque tu appelles une requetes optimisé? (je n'est que des petits select)

    Pour les images yen a bcp donc je pense je peux jouer la dessus

    En tout cas merci pour ta réponse, si tu vois d'autres conseils a me donner je suis preneur :p

    A si j'ai une question : dans la boucle qu'est ce qui est mieux, extract($don) ou $don['nom_du_champ'] niveau rapidité?
    Linux because rebooting is just for adding medias

  4. #4
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Tu peux gagner quelques millisecondes en utilisant les single quotes au lieu des doubles quotes dans ton code PHP.

    Ton code html joue également un rôle très important.
    Il faut éviter de mettre le contenu d'une balise sur plusieurs lignes, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <a href="
    mapage.php?param=1&amp;param2=3"
    onclick="coucou();"
    onmouseover="salut();"
    >
    Mon lien
    </a>
    Les images doivent être redimensionnées avec un programme avant d'être intégrées au design car les attributs width ou height affectent l'affichage, mais pas le poids du fichier. Inutile de leur coller une résolution à 300dpi, à part si tu veux les vendre

    Eviter les tableaux imbriqués !

    Ce sont pour moi les points clés que je peux ajouter à ce qu'a dit Psylox, mais y'en a plein d'autres à mon avis !
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par psylox
    Quesque tu appelles une requetes optimisé? (je n'est que des petits select)

    A si j'ai une question : dans la boucle qu'est ce qui est mieux, extract($don) ou $don['nom_du_champ'] niveau rapidité?
    Une requete optimisé est surtout si tu as des jointures de table dans tes select, si tu test tes requete dans phpmyadmin ou autre ca écrit le temps d'execution, hors une requete sur plusieur table peut prendre, si elle n'est pas optimisé...6-7 seconde (ce qui est quand meme très long) mais une fois optimisé prend 0.5 seconde, gagnant significativement de la rapidité
    pour ce faire penche toi sur les index et la fonction explain pour optimiser

    et pour ta 2e question, je ne sais pas, j'ai jamais utiliser extract($don) j'utilise plutot une forme comme while($don = mysql_fetch_array($requete))

    je ne sais pas s'il y en a un plus rapide que l'autre
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par ozzmax
    et pour ta 2e question, je ne sais pas, j'ai jamais utiliser extract($don) j'utilise plutot une forme comme while($don = mysql_fetch_array($requete))
    Oui je suis d'accord je fais ça aussi mais c'est après :
    while($don=mysql_fetch_array($rq)) { extract($don); --> utilisation direct de $nom ou bien ne pas faire l'extract et utiliser la forme en tableau --> $don['nom']
    .....}

    Ok pour les requetes optimisé ça je connais mais plus sur Oracle , dans le cas de ce site je n'ai pas de jointure pour le moment. Je go look le explain je connais pa.


    Ok mathieugamin, j'avais déja fais attention a ne pas étaler mes balises sur plusieurs lignes, et les images sont faites par un designeur a part , je lui donne les dimensions et lui ce débrouille pour que ça rentre au poils

    Merci à vous, je vais modifier tout ça et voir si ça prends moins de temps
    Linux because rebooting is just for adding medias

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Je pense qu'avant de chercher à optimiser ton code. il faut déterminer
    les points faibles en terme de performance. Pour ça tu peux utiliser
    la fonction microtime pour mesurer le temps.

    http://fr.php.net/manual/fr/function.microtime.php

    Tu places des points de mesures à plusieurs endroit de ton traitement.

    Une fois que tu as déterminé les points faibles, cherche à évaluer le cout
    de chaque optimisation. Non seulement en temps de travail immédiat, mais
    aussi en pensant à ce que cela peut engendrer comme problèmes dans le
    futur pour le maintien de l'application.
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  8. #8
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    en ce qui concerne mysql, évite de faire des SELECT * mais cible plutot les champs dont tu as besoin.

    Regarde également si les clés primaires de tes tables sont bien choisies, et si tu les utilisent toutes lorsque tu fais une requete.

    Evite de faire des redondances au niveau des requetes.
    Par rapidité on refait parfois une requete alors que l'on a déjà les informations demandées
    (pense à stocker les infos utiles et que tu utilises souvent en variable de session)

    Evite de dépasser les jointures doubles (2 tables). Ca devient tres long en traitement. Je pense qu'il vaut mieux faire ta jonction en faisant de la cuisine php que de faire une jointure à 3 ou 4 tables.

    Si tu as plein de while et de parcours de table, essaie de voir si tu ne peux pas faire 2 while en un. à savoir faire tout le traitement dont tu as besoin avec un seul parcours d'index.

    Je ne sais pas si les index (dans le sens sql du terme) existent sur mysql, mais si oui n'hésite pas à en créer pour les utiliser dans tes requetes.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Un tel topic existe déjà et est à priori bien plus complet Optimisation de scripts PHP/MySQL

    Bonne lecture

  10. #10
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Merci Julp,
    je comptais sur ce topic pour optimiser certains de mes scripts un peu bourins, mais le tien est plutôt renversant !
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  11. #11
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 241
    Points : 272
    Points
    272
    Par défaut
    Merci pour toutes vos réponses (j'apprends, j'apprends )

    J'ai trouvé d'ou venai mon problème de rapidité pour le chargement.

    On m'avait demandé d'ajouter dans l'un des petits menus une image qui s'affichai aléatoirement a chaque chargement de page ... et mon script était très mal penser et demandait beaucoup trop d'échanges avec la BD. Je l'ai donc virer et je suis entrain de me pencher sur une meilleur solution.

    J'ai d'ailleurs une petite idée avec les variables de session (auquel je n'avais pas penser avant et de charger toutes les images dans un array 1 seul fois par session). Ce n'est pas trop le sujet de ce topic, donc je n'étale pas je vais tester ma solution ou une autre et je verrai bien .

    Merci marcha je vais donc faire quelques tests en relisant le topic donné par julp

    Merci à vous

    Je ne mets pas résolu car on peut toujours améliorer la rapidité et la qualité de ces codes
    Linux because rebooting is just for adding medias

Discussions similaires

  1. Amélioration requête rapidité
    Par fredaster31 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/10/2012, 14h27
  2. Améliorer la rapidité de mon appli ?
    Par Baboulinet_ dans le forum Général Java
    Réponses: 3
    Dernier message: 15/11/2011, 15h01
  3. Améliorer rapidité requête mysql
    Par Pitof dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/06/2011, 10h36
  4. Compression des pages pour améliorer la rapidité
    Par econo-ecolo dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 26/06/2009, 09h00
  5. Amélioration rapidité requête
    Par viny dans le forum PostgreSQL
    Réponses: 15
    Dernier message: 07/03/2008, 10h00

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