ファイル名とjsonオブジェクトを受け取ってテキストファイルに書き込む関数があります。
オブジェクトが更新され、ファイルの現在の内容を完全に置き換える必要があります。各サイト訪問者には、独自のファイルがあります。複数の急速な変更により、ファイルが によって切り捨てられfopen(file,w+)
、ロックされているために書き込まれないという状況が生じます。最終結果は空のファイルです。
それはとても普通の活動なので、これを行うための標準的な簡単な方法があると確信しています。理想的には、私が探しているのは、fopen
モードw+
またはモードを切り替える方法でファイルを切り捨てる前に、ファイルにロックがあるかどうかを確認する方法です。
fopen()
ファイルがロックされているかどうかを確認するために渡すファイル ハンドルを取得するために でファイルを切り詰める必要があるのは奇妙に思えますが、ファイルを切り詰めたflock()
だけなので、何の意味があるのでしょうか。
これが私がこれまで持っている機能です:
function updateFile($filename, $jsonFileData) {
$fp = fopen($filename,"w+");
if (flock($fp, LOCK_EX)) {
fwrite($fp, $jsonFileData);
flock($fp, LOCK_UN);
fclose($fp);
return true;
} else {
fclose($fp);
return false;
}
}