seif_scalp Posté 28 Juin 2007 Posté 28 Juin 2007 Bonjour, voilà sur mon site, j'ai environ une cinquantaine de mysql_query envoyé par page ce qui me provoque en gros une aparition des pages en 0.5sec de temps de chargement ... et donc je me demandais quels méthodes pour diminuer au maximum ce temp ? est ce que ouvrir et fermer mysql pour chaque requete l'optimise ? j'utilise à chaque fois mysql_free_result j'ai déjà lu beaucoup de sujets sur l'optimisation dont le sujet réalisé par online.fr j'ai créer une indexation etc etc... je ne vois pas comment l'optimiser plus en fait avez-vous des idées ? merci d'avance !
theprogrammeur Posté 28 Juin 2007 Posté 28 Juin 2007 Utilise des jointures MySQL, ça pompera moins de ressours (LEFT JOIN)
captain_torche Posté 28 Juin 2007 Posté 28 Juin 2007 Il s'agit de 50 requêtes effectuant des actions diféfrentes, ou d'une boucle effectuant 50 fois la même requête, avec des paramètres différents ?
NorSeb Posté 28 Juin 2007 Posté 28 Juin 2007 Utilise des jointures MySQL, ça pompera moins de ressours (LEFT JOIN) Encore faut-il pouvoir Il y a différentes pistes à explorer : - la structure de ta base de données est-elle optimale ? ; - l'hébergement de ton site : est-ce que le serveur est assez puissant ? - est-ce que les 50 requète sont indispensables ? N'y a-t-il pas des pages (ou éléments de page) qui pourraient être générées à intervalle régulier ? Je ne suis pas certain d'être exhuastif
Thomas.WS Posté 28 Juin 2007 Posté 28 Juin 2007 S'il place une requête dans une boucle, ça pourrait laisser à croire que la jointure est possible... Ou pas... Sinon, il n'y a aussi l'erreur à pas faire pour optimiser une requête, c'est : SELECT monchamps1, monchamps2 FROM matable Et non SELECT * FROM matable Alors que la table comprend 50 champs...
seif_scalp Posté 28 Juin 2007 Auteur Posté 28 Juin 2007 je vais regarder les jointures ce soir, sinon en ce qui concerne l'optimisation basique j'ai déjà tout vu et tout travailler ... par contre j'ai trouver un truc sympa en optimisation c'est le cache mysql ... je l'ai mis en place et mes 50 requetes différentes ont un temps d'execution divisé par 7 donc bien appréciable ... en ce qui concerne le cache par exemple pour une nouvele news : je détruit le cache existant et j'en recréer un a chak nouvele news? c'est ce que je compte faire en tout cas merci pour vos réponses je me demandais d'ailleurs comment on faisait pour faire un cache mysql ? car je fait seulement un cache PHP pour le moment ' je met en cache ma page php sous forme html
Damien_ Posté 30 Juin 2007 Posté 30 Juin 2007 (modifié) Peut être qu'en passant en programmation objet, le temps de reponse sera meilleur. Chaque objet aura ses propres fonctions ( requete Select, suppr, replace into .. ) une fois un objet instancié tu n'a qu'a appelé la fonction correspondant à la bonne requete, sa t'évite d'avoir 10000 requetes php faisant la meme chose et instancié un objet permet de le garder en mémoire. Tu peux toujours optimiser le temps dans le choix de tes fonctions php, voir : http://www.estvideo.com/dew/pages/phpbench/ Modifié 30 Juin 2007 par Damien_
binarygirl Posté 30 Juin 2007 Posté 30 Juin 2007 50 queries pour une page c'est considérable. S'agit-t'il à chaque fois de requêtes sur des tables différentes ? Si c'est sur une même table il devrait être possible de regrouper les requêtes en une avec une clause WHEREIN puis faire une boucle pour l'affichage.
seif_scalp Posté 1 Juillet 2007 Auteur Posté 1 Juillet 2007 en fait là j'ai trouvé le système de cache fort intéressant, il réduit le temps d'exécution des pages par 7 ce qui est fort appréciable ... mais je reste au demeurant toujours intéressé par une augmentation de rapidité et l'idée de la POO m'est fort appréciable, auriez-vous une doc suffisament compréhensible pour apprendre la poo ? car jusqu'à maintenant j'ai lu et bosser plein de trucs sur la poo mais jamais j'ai réussi a m'y mettre car trop flou merci pour vos réponses !
Damien_ Posté 1 Juillet 2007 Posté 1 Juillet 2007 (modifié) la POO en PHP c'est pas forcément compliqué a comprendre mais débuter par ses propres moyen tu va galerer je pense. Mais si tu désire essayer .. aide toi avec ca et ca. Pour moi le but de la POO est de séparer tout ce qui est requete et bdd du reste ( tableau, affichage .. )Une fois ta modélisation objet bien conçu, tu ne touche plus à la base de données .. Je m'explique. tu auras tes fichiers d'objet ( contenant les fonctions de chaque objet ) et de l'autre coté tes fichiers qui te permette d'afficher tes pages dans lesquels se trouve tes appels de fonctions. Pour t'aider à comprendre le fonctionnement : dans mon fichier de scripts ' users ' j'ai une fonction suppr qui delete de la bdd un champ .. function suppr(){ $query = "DELETE FROM `users` WHERE ID=" . $this->id;echo($query); $this->con->query($query); } Dans ma page d'affichage j'ai un tableau d' user qui me permet grace à une croix sur chaque ligne du tableau de supprimer l'utilisateur corréspondant à la ligne. Je donne à cette croix un lien: " index.php?page=utilisateur&id_user=$id_user &action=suppr" Avec ce petit lien tout deviens simple, sachant que toutes mes fonctions sont dans un fichier ( select * , delete .. , insert into, chargement de tout les infos de mon objet user dans un tableau ... ) je n'ai pu à toucher a la base de données !!! Je récuper le type d'action qui est afficher dans mon lien avec un $_GET, donc pour l'exemple l'action est suppr. Je fais : include ('tonfichier_script_user'); $utilisateur=new user(); $utilisateur->id=$_GET["id_user"];switch ($_GET["action"]) { case "suppr": $utilisateur->suppr();break; // la tu peut mettre d'autre fonction :) } Dans ce bout de code, j'instance un objet utilisateur de type user. utilisateur->id permet de dire que c'est la variable $id du script user que tu attribue à ton objet utilisateur. Si je clic sur ma petite croix rouge je vais donc effectuer la fonction suppr .. Je te laisse découvrir les créations de classes et d'instanciation. Modifié 1 Juillet 2007 par Damien_
seif_scalp Posté 1 Juillet 2007 Auteur Posté 1 Juillet 2007 oui je comprend de mieux en mieux l'interet d'utiliser les class en php ... seulement pour débuter c'est assez chaud, j'avais déjà essayé il y a 6 mois mais j'ai finalement opter par flemme avec le procédural, là j'ai rebosser toute la journée sur la POO pour assimiler mieux le code, et je compte bosser ce soir sur une class pour essayer de me débrouiller, et en effet c'est bien plus pratique pour la réutilisation du code ! mais est-ce que cela va augmenter la rapidité du serveur ? ( même si je compte m'y mettre quand même ) ou est ce que ce n'est utile que pour un travail clean sur le code merci pour l'exemple détaillé
Damien_ Posté 2 Juillet 2007 Posté 2 Juillet 2007 Moins il y a de ligne dans ton code et plus le serveur sera rapide. Avoir 50 requêtes sur une page c'est surment que tu as mal pensé ta programmation, j'ai jamais vue ca moi en même temsp je suis qu'étudiant. Mais une programmation objet te permet de modulariser ton code et ainsi rendre évolutif ton site. voici les interêts de la POO en PHP.
seif_scalp Posté 2 Juillet 2007 Auteur Posté 2 Juillet 2007 j'ai recherché pas mal de code sources sur les class mysql et j'en ai trouver quelques uns fort sympathiques mais pas forcément ce que je cherchais est ce que quelqu'un en aurait un perso sur lequel je puisse un peu me rendre compte de comment faire merci
Damien_ Posté 2 Juillet 2007 Posté 2 Juillet 2007 envoi moi par mail une adresse msn, je t'aide ce soir si tu veux. J'ai ce qu'il te faut en classe mysql et fonction requete.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant