「1.php」と「2.php」の2つのファイルを用意しました。
「1.php」はこんな感じです。
<?php
$dbh = new PDO('sqlite:test1');
$dbh->beginTransaction();
print "aaa<br>";
sleep(55);
$dbh->commit();
print "bbb";
?>
「2.php」はこんな感じです。
<?php
$dbh = new PDO('sqlite:test1');
$dbh->beginTransaction();
print "ccc<br>";
$dbh->commit();
print "ddd";
?>
そして私は「1.php」を実行します。トランザクションを開始し、55秒待機します。
したがって、すぐに「2.php」を実行すると、次のようになります。
- 「1.php」はトランザクションを取得しており、
- 「1」はデータベースロックを保持します
- 「2」は取引を開始できません
- 「2」はデータベースロックを取得できないため、
- 「2」は55秒待たなければなりません
しかし、しかし、テストは別の方向に進みました。「2」を実行すると、
- 「2」はすぐに結果を返しました
- 「2」は待たなかった
したがって、「1」はトランザクションを取得できなかったか、データベースロックを取得できなかったと考える必要があります。
誰か助けてもらえますか?