Optimiser une map - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Optimiser une map (/showthread.php?tid=744) Pages :
1
2
|
Optimiser une map - sff - 01-02-2007 Bonjours, je cherche à optimiser ma map (carte) pour un rpg en php. J'utilise actuellement des while pour faire un tableau, mais c'est extremement long à charger ( entre 7 et 15 secondes suivant le serveur). Je me demande comment je pourrais faire pour optimiser, et avoir un affichage plus rapide. Le code: Code : $latmax = $infosperso['latitude'] + 3; RE: Optimiser une map - denisc - 01-02-2007 Ce qui est long dans ton affichage, ce sont les requêtes répétées à la BD... Essaie plutôt ceci: Code PHP :
si ce n'est pas dans le bon ordre, inverse les deux champs du ORDER BY RE: Optimiser une map - Seren - 01-02-2007 Par principe, il faut éviter de mettre une requête à la BBD dans une boucle. Il vaut mieux écrire une requête plus complexe et ensuite traiter les données récupérées. RE: Optimiser une map - Shudrum - 02-02-2007 Parfois on n'a pas le choix, perso, cela ne m'a jamais embêté de les mettre dans les boucles. RE: Optimiser une map - pascal - 02-02-2007 comment optimiser ce genre de choses? ( mini tutorial méthodologique) 1. détecter le problème éventuel c'est assez simple à voir: _ on a une requête dans une boucle _ on a beaucoup de requetes dans une même page _ le script est suuuuuuuuuuuper long à exécuter 2. optimiser le truc c'est de sortir la requête de la boucle. pour cela, il faut voir quel est le lien entre la requête hors boucle et la requête dans la boucle; à partir de là, on peut faire une jointure pour obtenir, au final, les mêmes informations en une seule requete avant la boucle. il faut tester la requete pour y inclure le bon ORDER BY. s'il n'y a pas de requete à l'extérieur, il faut procéder autrement. la boucle utilise une ou plusieurs variables ( comme $x et $y ou $longitude et $latitude pour une carte ) dans ce cas, il faut intégrer ces variables dans la requete, via la clause ORDER BY. par exemple, on affiche les avatars sur la carte, en triant d'abord sur la coordonnée X puis sur la coordonnée Y. A+ Pascal RE: Optimiser une map - denisc - 02-02-2007 Merci d'avoir expliqué ce que je lui ai recodé RE: Optimiser une map - pascal - 03-02-2007 il faut documenter son code RE: Optimiser une map - sff - 03-02-2007 Excusez moi j'étais absent durant la semaine, merci de votre aide, je teste ca tout de suite. RE: Optimiser une map - sff - 03-02-2007 Non ca ne fonctionne pas, et c'est logique. Je vais expliquer. En fait je faisais cette requete: $joueurs_sql = doquery("SELECT avatar FROM {{table}} WHERE latitude='$latitude' AND longitude='$longitude' LIMIT 1", "users"); Lorsque que je joueur était situé sur une case précise, on exécutais tous les requetes avec un where (WHERE latitude='$latitude' AND longitude='$longitude') Genre si le joueur est situé sur un longitude 1 et une latitude 2 on faisai une requete comprenant WHERE latitude=2 AND longitude=1 or la c'est un order, et on a plus les variable $longitude et $latitude dans la requete. Je sais pas trop comment m'y prendre. RE: Optimiser une map - Loetheri - 03-02-2007 L'utilisation de BETWEEN peut être intéressante pour ce que j'ai lu du sujet. |