在php中同时保存xml文件后损坏的XML文件

时间:2015-05-15 08:28:14

标签: php xml file permissions domdocument

我有一个php-Script,它将一些数据保存到XML文件中。 但是如果两个用户同时保存了一些数据,那么XML就会被破坏,所有数据都会丢失。

这是我的代码:

$dom                     = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load($szFile);

......行动......

$dom->formatOutput = true;
$dom->save($szFile);

是否有推荐的方法来保存没有此问题的XML文件?

1 个答案:

答案 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);

}