5 Stimmen

SQLite-Transaktion funktioniert nicht wie erwartet

Ich habe 2 Dateien vorbereitet, "1.php" und "2.php".

"1.php" sieht folgendermaßen aus.

<?php
$dbh = new PDO('sqlite:test1');
$dbh->beginTransaction();

print "aaa<br>";
sleep(55);
$dbh->commit();

print "bbb";
?>

und "2.php" sieht folgendermaßen aus.

<?php
$dbh = new PDO('sqlite:test1');
$dbh->beginTransaction();

print "ccc<br>";
$dbh->commit();
print "ddd";
?>

und ich rufe "1.php" auf. Es wird eine Transaktion gestartet und 55 Sekunden gewartet.

Wenn ich also sofort "2.php" ausschreibe, ist meine Erwartung die folgende:

  1. "1.php" wird zur Transaktion und
  2. "1" hält eine Datenbanksperre
  3. "2" kann keine Transaktion beginnen
  4. "2" kann keine Datenbanksperre erhalten, also
  5. "2" müssen 55 Sekunden warten

ABER, der Test verlief anders. Wenn ich "2" ausschreibe, dann

  1. "2" lieferte sofort sein Ergebnis
  2. "2" hat nicht gewartet

Ich muss also annehmen, dass "1" keine Transaktion oder keine Datenbanksperre erhalten konnte.

Kann jemand helfen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X