16-02-2010, 04:44 PM
Je pense que ce serait une erreur de ne pas mettre d'index sur des colonnes souvent sollicitées.
Sephi-Chan
Sephi-Chan
16-02-2010, 04:44 PM
Je pense que ce serait une erreur de ne pas mettre d'index sur des colonnes souvent sollicitées.
Sephi-Chan
16-02-2010, 11:34 PM
17-02-2010, 08:53 PM
Je reviens de nouveau vous poser une question, la dernière, enfin j'espère (depuis le temps que je dis que ça va être la dernière...). Cette fois-ci c'est sûrement la plus compliquée de toutes.
Comment faire pour éviter qu'un évènement impliquant deux joueurs ne soit exécuté deux fois ? J'imagine le scénario-catastrophe suivant : 0. Un combat est programmé entre A et B 1. A se connecte, la liste des évènements est récupérée et le calcul du combat démarre 2. Pendant ce temps, B se connecte, récupère la liste des évènements et voit aussi qu'il y a un combat à traiter. 3. Le calcul du combat est terminé chez A, l'évènement correctement traité est effacé. Tout va bien. 4. Le calcul du combat est terminé chez B. ON tente de supprimer l'évènement une deuxième fois mais rien ne se passe et pourtant tout va bien. Alerte au bug ! le combat a eu lieu deux fois ! JE vois bien une solution bourrin, mais il doit y avoir plus simple pour prévenir de ce genre de bug. Inutile de rappeler qu'une requête dans une boucle est un véritable auto-suicide propre à soi-même de la mort qui tue conduisant à un terrible cataclysme inéluctable et apocaliptique pour les performances. Code : while ($db->value('select @flag')>0) usleep(10); // carton rouge De plus, je ne vois pas en quoi les transactions règleraient le problème. Parce qu'on pourrait avoir ce scénario-là : 1. A se connecte et commence une transaction B. A récupère la liste des évènements et voit le combat 3. A traite le combat 4. A sauvegarde 5. B se connecte et commence une transaction. Pas de problème vu que les deux connexions à MySQL sont indépendantes 6. B récupère la liste des évènements. A n'a pas encore commit donc B voit toujours le combat dans la liste des évènements récupérée 7. A commit 8. B traite le combat 9. B sauvegarde 10. B commit. Résultat : le combat a été effectué deux fois quand même. Ou alors est-ce que je suis paranoïaque et les scénarios que j'expose ne peuvent techniquement jamais arriver ?
html, javascript, blagues, midi, etc. => http://quentinc.net/
17-02-2010, 09:27 PM
Citation :# En gros c'est implicite, et on y a déjà pensé pour toi ^^
17-02-2010, 11:21 PM
Donc autrement dit le scénario n°2 est impossible, les deux jeux de requêtes s'exécutent successivement. Ais-je bien compris ?
html, javascript, blagues, midi, etc. => http://quentinc.net/
18-02-2010, 11:29 AM
A peu de choses près, même si c'est un peu plus compliqué que ça.
Exemple : Je démarre une transaction, sur une table X, mais plus tard, j'ai besoin de locker Y. MySQL, va commiut, unlock, et lock X et Y. M'enfin, déjà, le scénario à la base, et très hypothétique, car il faut que 2 personnes ayant, un event commun, affiche au même time, une page. Ça réduit les possibilités :p
21-02-2010, 09:01 AM
Merci pour toutes vos réponses.
ON peut maintenant dire que le sujet est résolu.
html, javascript, blagues, midi, etc. => http://quentinc.net/
21-02-2010, 10:14 AM
si quelqu'un a le courage de faire un tuto sur les executions multiples et les tranaction...j'ai l'impresion que ce questionnement est recurrent
bonne journée
21-02-2010, 11:37 AM
C'est vrai qu'on a jamais autant parlé de PDO et des transactions que ces dernières semaines.
Le wiki est là, donc si vous voulez écrire, vous savez où aller ! Sephi-Chan |
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
[PHP] Structure d'un tableau pour un graphe | zeppelin | 15 | 5 781 |
16-08-2011, 06:17 AM Dernier message: zeppelin |
|
Quelle structure de base pour commencer à développer ? | Blondin | 42 | 19 887 |
27-07-2011, 03:05 PM Dernier message: Arius Vistoon |
|
Probleme pour récupérer des infos dans plusieurs tables | Ogham | 11 | 4 408 |
10-11-2007, 07:12 PM Dernier message: Ogham |
|
[résolu] pb jointure tables? | YVES | 19 | 6 841 |
24-01-2007, 11:48 PM Dernier message: Raoull |