set_file_buffer を使います。
通常、ファイルに書き込む際には、php側でバッファに書き込んでから、ファイルに実際に書き込まれます。つまり、直ぐには書き込まれないということです。
ある程度バッファにたまったところでファイルに書き込まれます。これは、バッファにためて書き込んだ方がディスクIOを減らし、高速になるからです。
複数プロセスでファイルに書き込む際に、すぐに書き込まれないと困る場合があります。
例えば、アクセスカウンタで、2人が全く同時にアクセスしたとして、同じアクセス数の値を読み込み、+1してデータを書き込んだとすると、2アクセスなのに1アクセスになってしまうことがあります。
fwrite などを行った際にすぐに書き込まれてほしい場合は、
set_file_buffer($fp, 0);
のように、バッファサイズを0にしておくと、他のプロセスによるファイルへの書き込みが許可される前に書き込みが全て完了することが保証されます。
スポンサードリンク
PHPサンプル集