我有一个php-Script,它将一些数据保存到XML文件中。 但是如果两个用户同时保存了一些数据,那么XML就会被破坏,所有数据都会丢失。
这是我的代码:
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load($szFile);
......行动......
$dom->formatOutput = true;
$dom->save($szFile);
是否有推荐的方法来保存没有此问题的XML文件?
答案 0 :(得分:0)
也许我必须重命名文件以确保没有人可以访问它?
打开:
function openXML($szFile){
$szPath = '../path/';
$szDummyFile = 'dummy.xml';
$i = 0;
$bRepeat = true;
$bContinue = false;
while($i < 20 && $bRepeat){ // Timeout: 10 s
if(file_exists($szPath . $szFile)){
rename($szPath . $szFile, $szPath . $szDummyFile);
$bRepeat = false;
$bContinue = true;
}else{
usleep(500000); // 0,5 s
}
$i++;
}
if($bContinue){
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load($szPath . $szDummyFile);
return $dom;
}else{
return false;
}
}
保存:
function saveXML($dom, $szFile){
$szPath = '../path/';
$szDummyFile = 'dummy.xml';
$dom->formatOutput = true;
$dom->save($szPath . $szDummyFile);
rename($szPath . $szDummyFile, $szPath . $szFile);
}