flockが使えればそれを使うのが一番簡単なんだけど、使えないサーバも結構あるようです。
配布を前提として、Perl/CGIプログラミングをするなら、flockの代替手段を用意したほうが親切でしょう。
特に、Perl 5.8以上じゃないと動かない書き方で書いている場合は、 Perl 5.8以上の環境である確率 * flockが使える環境である確率= だとあまりにも低い となってしまうのでなおさらです。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− $retry = 5; # リトライ回数セット while (!mkdir($lockdir, 0755)) { # 作成。出来なければ待つ if (--$retry <= 0) { # 5回ダメなら if (mkdir($lockdir2, 0755)) { # ロックを消すための排他 if ((-M $lockdir) * 86400 > 600) { # 作成時間が10分以上前なら # ロック入れ替え rename($lockdir2, $lockdir) or &error("LOCK ERROR"); last; # 一連の処理へ } else { rmdir($lockdir2); } # 部分ロック削除 } &error("BUSY"); # あきらめる } sleep(1); # 1秒待つ }
# 一連の処理
rmdir($lockdir); # 削除
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
猫の手 高室(たかむろ)
|