作者: KAWAJI Shinya
日時: 2002/8/12(02:33)
かわじ、です


ごめんなさい、分かるところだけ。


> 某所で「えっ? (標準のデータベースモジュールを使う場合でも)
> 要るの?」みたいな話があったのですが、掲示板等の cgi でデー
> タベース(AnyDBM_File)を使う場合、ファイルのロックは必要で
> しょうか。

http://www.perldoc.com/perl5.6.1/lib/AnyDBM_File.html
> AnyDBM_File - provide framework for multiple DBMs
> NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File - various DBM
> implementations

ということですが、少なくとも DB_File にはロックが必要です。
http://www.perldoc.com/perl5.6.1/lib/DB_File.html#Locking--The-Trouble-with-fd

GDBM は大丈夫なような気が・・・(確信はありませんが)
http://www.linux.or.jp/JM/html/GNU_gdbm/man3/gdbm.3.html
> gdbm ファイルをオープンするプロセスは、「リーダ」または「ライタ」と
> 呼ばれる。 1 つの gdbm ファイルをオープンできるライタは 1 つだけだが、
> リーダは複数が 1 つの gdbm ファイルをオープンすることができる。 



> 僕自身はデータベースは使わず(@nifty では使えないので)ハッ
> シュを直接ファイルに tie して、ロックも自分でやってます。
> ロジックは、この種の話でよく出てくる、symlink を使ったタイム
> アウトつきのもので、完璧な方法ではないとしても、確率的には十
> 分だろうと思ってます。

以下のものが定評だと思いますが、 「symlink を使ったタイムアウト付き」
って、どんな方法でしたっけ?(ほとんど同じかな?)
http://www.din.or.jp/~ohzaki/perl.htm#File_Lock