CGI-BBS > SO−HO > ショッピングバスケット > ショッピングバスケット・プロV5.23でのロックについて


カレッヂ
カレッヂ


質問者 ふくちゃん  投稿日 2/7(木) 21:13:43
ショッピングバスケット・プロV5.23にはロック機能がついていませんけど大丈夫でしょか?
かなり大がかりなショッピングに使おうと考えているのですけれど、特に顧客データaddr.csvを保護したいのですけれど何か方法はあるでしょうか?
宜しくお願いします。
回答者 呑兵衛@大阪  [削除]  投稿日 2/7(木) 23:20:00
csv ファイルは追加モードで処理されるのでロックは必要ないと思います。
if (open(CSV,">> $csv_file")) {
print CSV "$CSV\n";
close(CSV);

むしろ、
if (!open(FILE,"> $tmp_dir$in{'_order'}\.bk5"))
のほうが、クッキーを発行する段階も含めてヤバイかも知れません。
ロックについては
レスキューサイトの FAQ 「ログやカウンタが消えるのですが」を
お読みになってください。
質問者 ふくちゃん  [削除]  投稿日 2/8(金) 09:27:14
呑兵衛@大阪 様

ご返事ありがとうございます。
> csv ファイルは追加モードで処理されるのでロックは必要ないと思います。
実はaddr.csvが肥大化するのを押さえたり、addr.csvの内容を参照したりするように
他のCGIで内容の不要な部分の削除などを行おうと考えておりますのでcargo.cgiにも
ロックがあった方が安全だと考えた次第です。
そうしなければaddr.csvは大きくなるばかりですから。

> むしろ、if (!open(FILE,"> $tmp_dir$in{'_order'}\.bk5"))
> のほうが、クッキーを発行する段階も含めてヤバイかも知れません。
これにも不思議な点があるのですけれど、$in{'_order'}\.bk5の場合はそのユーザーしか
使いませんので消失することは無いと考えているのですけど、実際に表示される注文番号と
$in{'_order'}\.bk5の番号とは違うのですね?
$in{'_order'}の値を変えている部分は見当たらないのですが、実際には違う番号に
なっています。でも.bk5は随時削除されていくようですので気にしておりません。

> ロックについては
> レスキューサイトの FAQ 「ログやカウンタが消えるのですが」を
> お読みになってください。
見ましたけれどロックが必要と書かれているだけで具体的なものは見つからなかったもので。

ご返事ありがとうございました。
回答者 呑兵衛@大阪  [削除]  投稿日 2/8(金) 23:59:04
addr.csv はデータとして nobody が利用する仕組みになっていないので、
オーダーがあった場合、書込み処理が追加モードでのみ、なされます。
addr.csv をデータとして処理されるとのことですが、処理されたデータを
別ファイルに記録するなどすれば、元の addr.csv は読込み処理するに
過ぎませんからますますロックが必要なくなります。

ロック処理は、不特定多数の nobody が、読込みと書込み処理をするデー
タファイルの同時処理の防止のためにあるものです。
たとえば、Rescueサイトのツリー式の掲示板のように、同一データの再処理
には必要な処置ですが、ショッピングバスケットのような不特定多数が同時
に読込む同一データのないスクリプトには、かえって荷物になるかもしれま
せん。
また、ご紹介した FAQ には具体的にロックを処理するスクリプトが書かれ
ていますので再度検証してみてください。
恐らく、「ロック機能」について多少の取り違えをされている気がします。
質問者 ふくちゃん  [削除]  投稿日 2/9(土) 01:16:20
呑兵衛@大阪 様

ご返事ありがとうございます。

> addr.csv はデータとして nobody が利用する仕組みになっていないので、
> オーダーがあった場合、書込み処理が追加モードでのみ、なされます。
> addr.csv をデータとして処理されるとのことですが、処理されたデータを
> 別ファイルに記録するなどすれば、元の addr.csv は読込み処理するに
> 過ぎませんからますますロックが必要なくなります。

現状ではaddr.csvはデータが全部残って肥大化するばかりですので、それを
販売管理データにも兼用することと、不要な月のデータは消してしまえるように
と考えております。
そのため書き込みと読み込みなどの作業がぶつかった時にログが消えないように
ロック機能を加えられたらと考えております。

> また、ご紹介した FAQ には具体的にロックを処理するスクリプトが書かれ
> ていますので再度検証してみてください。

失礼しました。見落としておりました。
一度スクリプトを足してみることにします。
どうもありがとうございました。

返信(回答)する


Web裏技