Boucles PHP / MySQL - Lenteur du navigateur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Boucles PHP / MySQL - Lenteur du navigateur

par Aureusms » 24 févr. 2009, 23:54

Bonjour,

Pourquoi tu demandes tout ces informations SELECT id_avocats,nom,prenom_abr,prenom,site,img_avoc,fonction,activite,domaines,specialisation

mais tu n'utilise que (future utilisation?)
  • $donnees['id_avocats'];
    $donnees['nom'];
    $donnees['prenom_abr'];
    $donnees['site'];
Pour savoir qui prends du temps essaye de faire un echo d'un timstamp par exemple. Tu verras qui te prends le plus de ressources.

par @rthur » 24 févr. 2009, 19:54

Bonjour,

Tu fais un include dans ta boucle, quel est le traitement effectué dans ce fichier inclus?

par Ryle » 24 févr. 2009, 19:32

Il n'y a pas grand chose à redire sur tes boucles... à moins de quelques millions de lignes à traiter, il n'y a pas de raison pour que cela prenne 15 secondes...

Tu peux optimiser un peu en remplaçant les mysql_fetch_array() par des mysql_fetch_assoc() puisque tu utilises seulement les noms de colonnes (et pas les positions).

Tu peux aussi retirer les colonnes inutilisées de ta requête (ex : "domaines", "specialisation", "activite") et ne sélectionner que les champs dont tu as besoin... mais ca fera pas passer de 15 à 2 sec...

Peut être des lenteurs à la connexion de la base de données ? Tu peux utiliser la fonction microtime() pour vérifier le temps passé entre les différentes parties de ton script (avant la connexion, après la connexion, après la première boucle while, etc.)
En faisant la différence avec le premier tu auras une estimation de la durée d'exécution de chaque partie de ton script php... :)

Boucles PHP / MySQL - Lenteur du navigateur

par Chandlerbuzz » 24 févr. 2009, 16:41

Bonjour,

J'ai quelques interrogations concernant mes boucles PHP car lorsque je souhaite afficher ma page, sous IE cela met 15 secondes et sous FF 5 secondes...De plus les autres pages sans boucles s'affichent rapidement.

Bref Apres avoir désactiver le Javascript, vider le cache, regarder les options du serveur, il me reste que le code PHP.

Voici ma page qui pose problème :

Code : Tout sélectionner

<?php connexion_DB('base_A'); ?> <ul id="avoc"> <?php $retour = mysql_query('SELECT id_avocats,nom,prenom_abr,prenom,site,img_avoc,fonction,activite,domaines,specialisation FROM avocats order by nom'); while ($donnees = mysql_fetch_array($retour)) { ?> <li> <div class="avoc_info"> <p><strong><a href='#demoInline<?php echo $donnees['id_avocats']; ?>' class='lightview' title=":: :: autosize: true, keyboard: false, overlayClose: false, menubar: false "><?php echo $donnees['nom']; ?> <?php echo $donnees['prenom_abr']; ?></a> </strong><br /><?php echo $donnees['site']; ?></p> </div> <?php include ("module_demoinline.php"); ?> <!-- C'est l'affichage avec lightview, du javascript. Je l'ai désactivé, ce n'est pas ça </li> <?php } // Fin de la boucle ?> </ul> <p><strong>Services administratifs :</strong></p> <ul id="admin"> <?php $retour = mysql_query('SELECT id_admin,nom,prenom_abr,prenom,fonction,site FROM admin order by fonction'); while ($donnees = mysql_fetch_array($retour)) { ?> <li> <div class="admin_info"> <p><strong><a href='#Inline<?php echo $donnees['id_admin']; ?>' class='lightview' title=":: :: autosize: true, keyboard: false, overlayClose: false, menubar: false "><?php echo $donnees['nom']; ?> <?php echo $donnees['prenom_abr']; ?></a> </strong><br /><?php echo $donnees['fonction']; ?><br /> <?php echo $donnees['site']; ?></p> </div> <?php include ("module_inline.php"); ?> </li> <?php } // Fin de la boucle ?> </ul> <?php deconnexion_DB(); ?>
Je vous comprends, la relecture est difficile ............... :s

Merci pour votre aide.