06-12-2011, 06:34 PM
Il y a 2 façons de faire si j'ai bien compris pour la résolution des actions d'un webgame:
- assynchrone / job queue
- synchrone / transaction
pour ma part c'est les transactions, et si je change le niveau d'isolation de mysql ce n'est pas par paranoia, c'est que j'ai fait des tests:
- tu ouvre 2 navigateur web A et B
- Le joueur du navigateur A attaque B
- sur les deux navigateurs il y a un chrono et quand il arrive à zéro cela reload la page web et lance la transaction de résolution
--> il peut y avoir une "race condition"
et selon mes tests, avec le niveau d'isolation par défaut de mysql, il est possible que la résolution ne se passe pas bien du tout même avec une transaction, car le niveau d'isolation "LEVEL REPEATABLE READ" permet la lecture de ligne fantômes
je ne pense pas que je me prenne la tête pour rien, vu qu'avec seulement 2 navigateurs web ouverts il est assez facile d'avoir ce genre de soucis...
--> http://sqlpro.developpez.com/isolation-transaction/ (c'est du SQL et pas MySQL mais c'est pareil.)
évidement faut pas mettre le niveau d'isolation le plus élevé par défaut sinon ca te pose des verrous par tout et tout le temps et ca rame grave...
sincèrement je pense que ceux qui utilisent le système "synchrone / transaction" pour la résolution des actions devraient faire leurs tests sur les niveaux d'isolation des transaction mysql...
- assynchrone / job queue
- synchrone / transaction
pour ma part c'est les transactions, et si je change le niveau d'isolation de mysql ce n'est pas par paranoia, c'est que j'ai fait des tests:
- tu ouvre 2 navigateur web A et B
- Le joueur du navigateur A attaque B
- sur les deux navigateurs il y a un chrono et quand il arrive à zéro cela reload la page web et lance la transaction de résolution
--> il peut y avoir une "race condition"
et selon mes tests, avec le niveau d'isolation par défaut de mysql, il est possible que la résolution ne se passe pas bien du tout même avec une transaction, car le niveau d'isolation "LEVEL REPEATABLE READ" permet la lecture de ligne fantômes
je ne pense pas que je me prenne la tête pour rien, vu qu'avec seulement 2 navigateurs web ouverts il est assez facile d'avoir ce genre de soucis...
--> http://sqlpro.developpez.com/isolation-transaction/ (c'est du SQL et pas MySQL mais c'est pareil.)
évidement faut pas mettre le niveau d'isolation le plus élevé par défaut sinon ca te pose des verrous par tout et tout le temps et ca rame grave...
sincèrement je pense que ceux qui utilisent le système "synchrone / transaction" pour la résolution des actions devraient faire leurs tests sur les niveaux d'isolation des transaction mysql...