Memahami Transaksi PDO MySQL: Kesan pada Pelaksanaan Skrip Serentak
Latar Belakang
Dalam PHP dokumentasi, transaksi digambarkan sebagai mekanisme yang memastikan integriti dan pengasingan operasi pangkalan data. Mereka menjamin bahawa sebarang perubahan yang dibuat dalam transaksi digunakan pada pangkalan data dengan selamat dan tanpa gangguan daripada sambungan lain.
Soalan
Ini menimbulkan persoalan sama ada dua PHP berasingan skrip boleh menjalankan urus niaga serentak tanpa mengganggu antara satu sama lain.
Penjelasan
Potensi gangguan terhasil daripada urutan peristiwa antara kedua-dua skrip. Pertimbangkan contoh berikut:
skrip1.php dan skrip2.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>
Jujukan Peristiwa
Bayangkan ini senario:
Possible Outcomes
Bergantung pada Tahap pengasingan MySQL dan penggunaan bacaan penguncian, gaji 'ana' yang terhasil boleh sama ada:
Kesimpulan
Hasil transaksi serentak bergantung pada tahap pengasingan dan penggunaan bacaan penguncian dalam MySQL. Memahami konsep ini adalah penting untuk mengelakkan gangguan antara transaksi yang dilaksanakan oleh berbilang skrip.
Atas ialah kandungan terperinci Bolehkah Dua Skrip PHP Menjalankan Transaksi Secara Serentak Tanpa Mengganggu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!