とある一般公開向けのWEBサービスを開発をしております。
PDO::beginTransactionの仕様についての質問です。
PHP
1 2// sample.php 3 4<?php 5$dbh->beginTransaction(); 6 7/*[A] データベース参照、更新、挿入などの処理*/ 8 9$dbh->commit(); 10?> 11
こう記述することで、[A]の中の処理は手動でコミットするまでデータベースに反映されないという仕様だと思うのですが、いくつかわからない点がありますのでご質問させてください。
仮にAさん、Bさん、Cさんがほぼ同時に、上記の処理が走るsample.phpを開いたとします。開いた順番は、A,B,Cとします。
まずAさんがトランザクションを実行し、処理が開始することになると思うのですが、その間、BさんとCさんはAさんの処理がコミットするまで処理待ち状態になるのでしょうか?
Aさんの処理が終わったら、Bさんの処理を開始して…というように、処理が終わるまで順番待ちになるのでしょうか?(平行して走ることはない?)
上記のsample.phpが実行されている間は、他のPHPファイルでも、テーブルの参照(SELECT文)は使えなくなりますか?(処理待ちになりますか?)
どなたかご教示お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/30 06:23