16/06/11 23:46:33.60 vIdecit0.net
>>722
上書きしてるから起こるんだよ、オブジェクトみたいに変数上書きしたら参照が無くなった方が勝手に破棄されるんじゃないから。
でも本質は、一つのハンドルには何度繰り返しロックをしてもスルーされるけど、一つのファイルでも別個の 2つのハンドルを取得しちゃった場合、
その両方にロックを掛けたらそりゃ 2度目の方はブロックされるという点。
意図せずこのバグを引き起こすケースとしてはこんな感じじゃね。
$lock = fopen('lock','a');
flock($lock, LOCK_EX);
<なんかの処理、でもうっかり $lock の値を壊してしまう>
fclose($lock); // ロックを解放したつもりだけど、$lock が正しいハンドルを示していないから失敗、ハンドルリーク
$lock = fopen('lock','a');
flock($lock, LOCK_EX); // 二度目のロック、同じファイルだけどさっきのロック取得済みのハンドルとは別ハンドルになるからロックを取得できない
: