Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Schritte für PHP+MySQL zur Verarbeitung von Sperrtransaktionen mit hoher Parallelität und Hinweise für PHP+ bringen Worum geht es bei MySQL mit hoher Parallelität? Werfen wir einen Blick darauf.
1. Hintergrund:
Es besteht nun eine solche NachfrageBestimmen Sie beim Einfügen von Daten, ob die Testtabelle Daten mit dem Benutzernamen „ hat. mraz‘, wenn nicht, wird es eingefügt, wenn ja, wird „eingefügt“ angezeigt. Der Zweck besteht darin, nur einen Datensatz mit dem Benutzernamen „mraz“ einzufügen.
2. Die allgemeine Programmlogik ist wie folgt:$conn = mysqli_connect('127.0.0.1', 'root', '111111') or die(mysqli_error());
mysqli_select_db($conn, 'mraz');
$rs = mysqli_query($conn, 'SELECT count(*) as total FROM test WHERE username = "mraz" ');
$row = mysqli_fetch_array($rs);
if($row['total']>0){
exit('exist');
}
mysqli_query($conn, "insert into test(username) values ('mraz')");
var_dump('error:'.mysqli_errno($conn));
$insert_id = mysqli_insert_id($conn);
echo 'insert_id:'.$insert_id.'<br>';
mysqli_free_result($rs);
mysqli_close($conn);
4. Lösung
: Verwenden Sie die Isolation der FOR UPDATE-Anweisung und -Transaktion . Beachten Sie, dass FOR UPDATE nur für InnoDB gilt und sich in einer Transaktion (BEGIN/COMMIT) befinden muss, um wirksam zu werden. Der angepasste Code lautet wie folgt:
$conn = mysqli_connect('127.0.0.1', 'root', '111111') or die(mysqli_error()); mysqli_select_db($conn, 'mraz'); mysqli_query($conn, 'BEGIN'); $rs = mysqli_query($conn, 'SELECT count(*) as total FROM test WHERE username = "mraz" FOR UPDATE'); $row = mysqli_fetch_array($rs); if($row['total']>0){ exit('exist'); } mysqli_query($conn, "insert into test(username) values ('mraz')"); var_dump('error:'.mysqli_errno($conn)); $insert_id = mysqli_insert_id($conn); mysqli_query($conn, 'COMMIT'); echo 'insert_id:'.$insert_id.'<br>'; mysqli_free_result($rs); mysqli_close($conn);
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Fallanalyse der Generierung von QR-Code-Postern mit PHPDetaillierte Erläuterung der Schritte zur dynamischen Komprimierung js- und CSS-Dateien mit PHP Detaillierte Erläuterung der PHPExcel-ÄnderungsschritteDas obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Handhabung von Sperrtransaktionen mit hoher Parallelität mit PHP+MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!