Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 24/04/2007, 17h04   #1
Membre confirmé
 
Homme Benjamin Rouxel
Développeur informatique
Inscription : avril 2007
Messages : 238
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Rouxel
Âge : 25
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2007
Messages : 238
Points : 228
Points : 228
Envoyer un message via MSN à psylox
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
psylox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 18h06   #2
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
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
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 10h50   #3
Membre confirmé
 
Homme Benjamin Rouxel
Développeur informatique
Inscription : avril 2007
Messages : 238
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Rouxel
Âge : 25
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2007
Messages : 238
Points : 228
Points : 228
Envoyer un message via MSN à psylox
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é?
psylox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 10h56   #4
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
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 :
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
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h34   #5
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
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
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 11h02   #6
Membre confirmé
 
Homme Benjamin Rouxel
Développeur informatique
Inscription : avril 2007
Messages : 238
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Rouxel
Âge : 25
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2007
Messages : 238
Points : 228
Points : 228
Envoyer un message via MSN à psylox
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
psylox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 13h28   #7
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
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 !
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 15h30   #8
Membre habitué
 
Avatar de Sarrus
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : mai 2005
Messages : 180
Points : 102
Points : 102
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.
__________________
http://www.guilde-active.fr
Sarrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 16h21   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Un tel topic existe déjà et est à priori bien plus complet Optimisation de scripts PHP/MySQL

Bonne lecture
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 16h45   #10
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
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
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 13h57   #11
Membre confirmé
 
Homme Benjamin Rouxel
Développeur informatique
Inscription : avril 2007
Messages : 238
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Rouxel
Âge : 25
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2007
Messages : 238
Points : 228
Points : 228
Envoyer un message via MSN à psylox
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
psylox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h03.


 
 
 
 
Partenaires

Hébergement Web