flock($fp, LOCK_EX);
fwrite($fp, $data);
flock($fp, LOCK_UN);
fclose($fp);
ファイルを書き込む前にロックを解除してはいけない。
ちゃんとテストすればわかるけど、これはロックの意味がなくて、
fwrite はバッファリングされるためロックを解除した段階ではまだファイルに書き込んでおらず、
ロックを解除する前に fflush を呼ぶか、あるいはロックを解除しないまま fclose で閉じて、
確実にファイルに書き込まれた後でロックを解除する必要がある。