Без примера кода невозможно дать ответ «исправить мой код», но при программировании записи / чтения файлов вы должны следовать простому процессу (в описании которого отсутствует один довольно важный шаг!)
Сначала запишите в файл TEMP (вы записываете в файл, но здесь важно записать в файл TEMP - в противном случае вы можете столкнуться с условиями гонки .......;);
простой способ сделать это в php
$yourData = "whateverYourDataIs....";
$goodfilename = 'whateverYourGoodFileNameIsForYourData.json';
$tempfilename = 'tempfile' . time(); // MANY ways to do this (lots of SO posts on it - just get a unique name every time you write ('unique' may not be needed if you only occasionally do a write, but it is a good safety measure to avoid collisions and time() works for many programs.)
// Now, use $tempfilename in your fwrite.
$fwrite = fwrite($tempfilename,$yourData);
if ($fwrite === false) {
// the write failed, so do whatever 'error' function you may need
// since it failed, there should be no file, but not a bad idea to attempt to delete it
unlink ($tempfile);
}
else {
// the write succeeded, so let's do a 'sanity check' on the file to make sure it is good JSON (this is a 'paranoid' check, but "better safe than sorry", right?)
if(json_decode($tempfile)){
// we know the file is good JSON, so now RENAME (this is really fast, so collisions are almost impossible) NOTE: see http://php.net/manual/en/function.rename.php comments for some potential challenges and workarounds if you have trouble with rename.
rename($tempfilename,$goodfilename);
}
// Now, the GOOD file will contain your new data - and those read issues are gone! (though never say 'never' - it may be possible, but very unlikely!)
}
Это может быть / не ваша проблема напрямую, и вам придется подойти, чтобы соответствовать вашему коду, но как фактор безопасности -и хороший способ избежать коллизий, он должен дать вам ~ 100% успеха при чтении, что, я считаю, то, что вы ищете!)
Если это не поможет, тогда потребуется какой-то прямой код для обеспеченияболее полный ответ.