自作CGIを評価するスレ (672レス)
上下前次1-新
抽出解除 レス栞
368(6): 03/06/22 07:46 ID:??? AAS
スレの趣向とは少し外れるんですが、
下記のロック、アンロックはどうでしょうか?
# lock routine
sub lock {
$retry = 5;
if (-e $lockex_file) {
$mtime = (stat($lockex_file))[9];
if ($mtime + 600 < time) {
rename($lockex_file, $lock_file) || &error("lock error");
}
省15
369(2): 03/06/22 09:04 ID:??? AAS
>>368
いいんじゃないかな。
while文の所は・・・
while ($retry--) {
return 0 if rename($lock_file, $lockex_file);
}
&error( 'Lock error' );
こうの方が良いかな。
370(1): 368 03/06/22 10:02 ID:??? AAS
>>369
どうもありがとうございます。
他のスレでこういう書き方をみかけました。
while (!rename($lock_file, $lockex_file) {
if (--$retry <= 0) {
&error("lock error");
}
}
>>369さんが書いてくれたものとどちらがいいんですかね?
371(16): 03/06/24 13:54 ID:01cZwzPj(1/5) AAS
>>368
このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
説明するのめんどいので、
外部リンク[htm]:www.din.or.jp
この辺りでも読んでみて。
>>370
好みだと思う。
個人的には>>368も>>369も>>370もループの最中にreturnやら&errorで関数の
外に飛んでるので気持ち悪い(これも好みの問題)。
省8
372: 368 03/06/24 14:57 ID:??? AAS
>>371
ありがとうございます。
ロックが甘いということは分かりましたが、アンロックはどうでしょうか?
まだ371さんがおっしゃったサイトは見てないのでなんとも言えませんが…。
もう少し勉強してみることにします。
指摘されたリトライですが、
if (--$retry <= 0) {
こうですね。
373: 03/06/24 15:24 ID:??? AAS
>>371
> このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
> 説明するのめんどいので、
> 外部リンク[htm]:www.din.or.jp
> この辺りでも読んでみて。
その辺り読んで、載ってるルーチンそのまま使ってテストした所、
ファイル壊れました。
俺は、>>368くらいの簡単なロックで良いと思うけど。
このロックで壊れるようなアクセス受けてるって事は、
その説明に載ってるようなルーチンでも、ほぼ壊れる。
省3
410(1): 368 03/06/25 18:02 ID:??? AAS
>>393さんがおっしゃってる通りたしかにスレ違いですが、
とても興味深い話題をありがとうございます。
>>402さんがおっしゃってることを試す価値はありそうなので、
とりあえずファイルを使うロックから、
ディレクトリを使うロックに変えてみたいと思います。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.081s*