[PHP-users 12109] Re: ページをまたいで、 DB のデータをロックする方法について

三山 貴史 php-users@php.gr.jp
Mon, 9 Dec 2002 17:21:37 +0900


三山貴史と申します。

最初に商品情報にアクセスしたユーザに、
該当する商品データの編集権を持たせたいということであれば、
ややアナクロな方法(?)かもしれませんが、
DBを使わず、商品コードをファイル名にした
「ロックファイル」を任意のディレクトリに形成するやり方もあると思います。

商品データをSELECTすると同時に
/hoge/lock/(商品コード)
というファイルがないか確認し、無ければユーザ自身で
/hoge/lock/(商品コード)を作成して確認画面→UPDATE処理へ進む。
もしあればファイルの作成日時を確認して
ファイル作成日時が現在より(例えば)5分以内であれば「ロック中」とみなして
編集不可(エラー表示)、5分以上たっていればファイルを自動削除して
確認画面→UPDATE処理へ進むといった具合です。
当然、UPDATE処理完了後はロックファイルを削除するというのは言うまでもないです
ね。

セキュリティ要件が許すならば、ファイルの中にユーザIDを書き込むことで、
誰にUPDATE権があるかも明記できます。

ただ例のように「5分」とロックファイルの寿命を決めても、
編集を途中でやめて別ページへ移動されると、
5分間誰もその商品データを編集できないという点が難点です。

参考になれば幸いです。

三山貴史
miyama@cergey.jp