14-12-2008, 03:00 PM
Pourquoi chez toi le nombre de connexion sql est limité à combien?
14-12-2008, 03:00 PM
Pourquoi chez toi le nombre de connexion sql est limité à combien?
14-12-2008, 03:16 PM
Là n'est pas la question. Le problème, c'est plutôt que le serveur n'arrive pas à gérer toutes ces requêtes : soit le serveur est trop faible, soit les requêtes ne sont pas optimisées. Ici, je pense qu'on est dans le cas des requêtes qui ne sont pas optimisée. Ce que tu pourrais faire, c'est donc une jointure sur les coordonnées dans ce genre : Code PHP :
Si dans ton système il ne peut y avoir qu'une seule chose par case, tant mieux, sinon il faudra gérer ça du côté de PHP puisqu'avec cette requête, si une case contient 1 personnage et 1 coffre, il y aura 2 lignes pour cette case : ce qui risque de bordeliser ton tableau. Voilà une piste, à toi d'y travailler et de poser tes questions. Sephi-Chan
14-12-2008, 05:24 PM
(Modification du message : 14-12-2008, 06:00 PM par Sephi-Chan.)
Bah, ça dépend ses moyens, combien il paie son hébergeur.
Mine de rien, pas tout le monde a de quoi s'offrir ou s'installer chez soi un serveur dédié ! Edit Sephi-Chan : On évite de dériver s'il vous plaît. ^^
14-12-2008, 05:56 PM
je serais incapable de mettre en œuvre cette jointure Sephi-Chan. Il faudrait que quelqu'un m'aide.
14-12-2008, 06:01 PM
Commence par être plus précis, ensuite on pourra t'aider.
Qu'est-ce qui te pose problème ? La syntaxe ? Le fonctionnement ? Etc. Sephi-Chan
Le code complet de la map est ici : http://sitedemickael.chez-alice.fr/map.txt Sephi-Chan avec l'exemple que tu m'a donné, je suis incapable de faire la jointure. Je peux au mieux mettre les véritables nom de table : Code PHP :
Mais on est très très loin surement de ce qu'on devrait avoir. Les tables nécéssaires : rpg_users (champs : id, charname, avatar, longitude, latitude) rpg coffers (champs : name, longitude, latitude) rpg_clans_elements (champs : pic, longitude, latitude) rpg_map (champs : longitude, latitude, pic) rpg_towns (champs : name, longitude, latitude) rpg_teleportations (champ : name, longitude, latitude) rpg_packages_offices (champs : name, longitude, latitude)
14-12-2008, 06:31 PM
En fait, il faut comprendre comment ça marche. Ensuite, il te suffira de faire des essais dans phpMyAdmin. Voyons comment fonctionne la requête : Code PHP :
Dans un premier temps, MySQL va sélectionner les informations de la table cases, qui contient les cases de ta carte (avec leur coordonnées x et y). Il commence donc à chercher dans la table (en restant de la cadre de sa clause WHERE), il commence une boucle. Comme on lui à indiqué par la ligne LEFT JOIN coffres ON coffres.x = cases.x AND coffres.y = cases.y. Là il regarde dans la table coffres s'il y a des coffres dont le champ x a la même valeur que le champ x de la case qu'il parcourt. Il fait la même chose avec le champ y du coffre, qu'il compare avec le champ y de la case. S'il trouve quelque chose, il remplit les cases qui concernent les coffres. Si non, il met des valeurs nulles dans ces cases. Ensuite, il évalue la jointure suivante de la même manière. Quand il a fini d'évaluer les jointures, il passe à la case suivante, avec laquelle il recommence ce processus. Au final, il a un tableau contenant toutes les cases (une ligne par case) avec des informations ou pas dans les cases. Entraîne-toi à faire des jointures dans ton phpMyAdmin en n'en faisant qu'une (celle des coffres, par exemple), puis quand ça marche comme tu le souhaite, tu en rajoutes une, et ainsi de suite. N'oublie pas également de nous préciser si une case peut accueillir plusieurs éléments (coffre, personnage, etc.), car ça complique un peu la chose. Sephi-Chan
Je rappelle juste que faire plus de 12 requêtes sql par déplacement, c'est juste énorme ^^ D'abord, faire une grosse jointure, c'est une très bonne chose. Mais j'insiste, un système de cache ne peut qu'être bénéfique, pour les éléments qui sont relativement fixes. C'est toujours ça en moins qui viendra engorger ton accès à ta base. Voici un bête exemple: Code PHP :
Code PHP :
Je pense que si tu créais rapido un petit module de mise en cache pour des éléments comme le décor, ça permettrait d'éviter de devoir aller chercher dans ta BDD des données supplémentaires. Je pense que l'une des meilleures manières d'optimiser les performances, c'est de multiplier les accès aux données, pour équilibrer le tout.[/php]
14-12-2008, 11:41 PM
Je tiens à préciser que la map étant relativement grande, compte plus de 200 000 enregistrements dans le table map. Est ce que ton système de cache tient toujours?
Le fichier de cache sera surement conséquent à charger à chaque déplacement. Non?
15-12-2008, 01:15 AM
(14-12-2008, 11:41 PM)sagaff a écrit : Je tiens à préciser que la map étant relativement grande, compte plus de 200 000 enregistrements dans le table map. Est ce que ton système de cache tient toujours? Tu peux découper ta map, et la disposer dans plusieurs fichiers cache. Prenons un exemple simple: La map fait 200 x 200. Tu la coupes en 4 et tu dispatches ça dans 4 fichiers. Suffit d'avoir une petite fonction qui te permet de déterminer le fichier à appeler en fonction du x et du y. |
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
[Résolu] Comment bien faire une carte sans trop de requêtes ? | oualala | 5 | 2 750 |
23-12-2008, 12:50 AM Dernier message: Hakushi |