Maison >base de données >tutoriel mysql >Deux scripts PHP peuvent-ils exécuter des transactions simultanément sans interférer ?
Comprendre les transactions PDO MySQL : impact sur l'exécution simultanée de scripts
Contexte
Dans PHP Dans la documentation, les transactions sont décrites comme des mécanismes garantissant l'intégrité et l'isolation des opérations de la base de données. Ils garantissent que toutes les modifications apportées au sein d'une transaction sont appliquées à la base de données en toute sécurité et sans interférence d'autres connexions.
Question
Cela soulève la question de savoir si deux PHP distincts les scripts peuvent exécuter des transactions simultanément sans interférer les uns avec les autres.
Explication
Le potentiel d'interférence résulte de la séquence d'événements entre les deux scripts. Prenons l'exemple suivant :
script1.php et script2.php
<code class="php">$conn->beginTransaction(); $stmt = $conn->prepare("SELECT * FROM employees WHERE name = ?"); $stmt->execute(['ana']); $row = $stmt->fetch(PDO::FETCH_ASSOC); $salary = $row['salary']; $salary = $salary + 1000;//increasing salary $stmt = $conn->prepare("UPDATE employees SET salary = {$salary} WHERE name = ?"); $stmt->execute(['ana']); $conn->commit();</code>
Séquence des événements
Imaginez ceci scénario :
Résultats possibles
En fonction de Le niveau d'isolement de MySQL et l'utilisation de lectures verrouillables, le salaire résultant de 'ana' peut être soit :
Conclusion
Le résultat des transactions simultanées dépend du niveau d'isolement et de l'utilisation des lectures verrouillées dans MySQL. Comprendre ces concepts est essentiel pour éviter les interférences entre les transactions exécutées par plusieurs scripts.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!