2ちゃんねるプラスClone開発スレ
■ このスレッドは過去ログ倉庫に格納されています
0679名無しさん@お腹いっぱい。
2007/01/21(日) 12:29:05sub filelock{
my $lockfile = $fn_boarddir . $Qs_get{'board'} . '/bbslockdir';
if(stat($lockfile)[9] < time - 30){
unfilelock();
}
for ($lockcnt=0; $lockcnt < 10; $lockcnt++){
if(mkdir($lockfile, 777)){
return 0;
}
sleep(1);
}
PrintErrorAndExit("ファイルロックを解除できません");
}
これできちんと sleep(1) しながら 10 回ファイルロックを試すようになる。
元のコードだと、「グローバル変数$i」の中身によって、
「sleepなしで11回試して、成功・失敗に関わらずreturn 0」か、
「1回試してロックに失敗したら即エラー終了」のどちらかがランダムに選ばれたはずだ。
また、もともとのコードでは
for ($lockcnt=0; $lockcnt <= 10; $lockcnt++)
となっていたが、この書き方だとロックを都合11回試すことになる。
こういう場合の for だと普通は < しか使わない。
気持ち悪いので上の例では直しておいた。
■ このスレッドは過去ログ倉庫に格納されています