2016-04-03 9 views
1

Hier ist mein PHP-CodeLocking Tabelle durch php

$LockQuery = "LOCK Table `customers` WRITE"; 
$LockResult= mysqli_query($connection,$LockQuery); 

Wenn ich dieses Skript ausführen es nicht Kunden Tabelle sperren, aber es funktioniert in mysql-Konsole. Es funktioniert auch nicht in phpmyadmin. Also gibt es einen Grund dafür? Hier ist phpMyAdmin Beispiel enter image description here

aber

enter image description here

+0

Haben Sie einen Fehler oder etwas bekommen? – DestinatioN

+1

Die Sperre wird wahrscheinlich ausgelöst, wenn die Sitzung (das Skript im Falle Ihres Skripts oder phpMyAdmin ...) endet, so dass Sie es nie bemerken werden, bis Sie Ihr Skript für eine Weile schlafen lassen. – jeroen

+0

Nein, es heißt, dass die Abfrage erfolgreich ausgeführt wurde, aber die Tabelle nicht gesperrt ist –

Antwort

1

Vom mysql manual:

Wenn die Verbindung für eine Client-Sitzung beendet, ob normal oder abnormal, der Server implizit veröffentlicht Alle Tabellensperren, die von der -Sitzung gehalten werden (transaktionsbezogen und nicht transaktional). Wenn der Client erneut verbindet, sind die Sperren nicht mehr wirksam.

Sie (oder phpMyAdmin) starten eine Sitzung, wenn Sie eine Datenbankverbindung in Ihrem Skript öffnen. Wenn Ihr - oder phpMyAdmin - Skript beendet ist, wird die Datenbankverbindung automatisch geschlossen und die Sitzung beendet.

Wenn Ihr Skript nur für eine kurze Zeit ausgeführt wird, werden Sie die Sperre nicht bemerken, da sie fast sofort freigegeben wird.

Um zu testen, ob Ihr Code funktioniert, müssten Sie eine Datenbankverbindung öffnen, die Lock-Anweisung ausführen und eine sleep(60); (zum Beispiel ...) hinzufügen, um die Sperre für eine Minute zu halten.

+1

danke @jeroen Ich habe meine Antwort bekommen –