Maison > base de données > tutoriel mysql > le corps du texte

Deux scripts PHP peuvent-ils exécuter des transactions simultanément sans interférer ?

Patricia Arquette
Libérer: 2024-10-28 12:42:31
original
269 Les gens l'ont consulté

 Can Two PHP Scripts Run Transactions Simultaneously Without Interfering?

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>
Copier après la connexion

Séquence des événements

Imaginez ceci scénario :

  1. script1.php sélectionne les données.
  2. script2.php sélectionne les données.
  3. script1.php met à jour les données.
  4. script2.php met à jour les données.
  5. script1.php s'engage.
  6. script2.php s'engage.

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 :

  • 11000 : Les transactions se chevauchent en raison d'un niveau d'isolement inférieur ou d'un non-verrouillage lectures.
  • 12000 :Les transactions sont exécutées individuellement en raison d'un niveau d'isolement plus élevé ou de lectures verrouillées.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!