je fais face le problème suivantproblème de requêtes simultanées dans MySQL
function book($memberid, $classid){
if (!book){
// update the db and change the book variable to true
}
}
Mon problème est de 2 demandes présentées en même temps. La première requête passe la ligne if (! Book) {mais pas encore le db. Et en même temps, la deuxième requête exécute la même fonction et passe également la ligne if (! Book) {. Par conséquent, le résultat est faux.
Je veux savoir comment résoudre ce problème de concurrence. Verrouiller le db? Mais j'ai peur que cela affecte la performance.
si (! Book) sélectionne simplement à partir de la base de données pour voir si la personne réserve une classe. Si la personne ne réserve pas la classe auparavant, elle peut alors réserver la classe. Sinon, il n'est pas autorisé à réserver à nouveau le cours. – Billy
Pourquoi ne changez-vous pas le db pour que la combinaison (personne, classe) soit une clé unique? De cette façon, physiquement, vous ne pouvez pas insérer deux fois la même valeur dans la table. Je prends toujours des suppositions sauvages parce que cela dépend de la structure de la base de données. MySQL a aussi une syntaxe spéciale pour faire une insertion conditionnelle qui conviendrait ici. Vérifiez http://forums.mysql.com/read.php?97,164551,164575#msg-164575 –