PHP同步文件读写

时间:2016-05-26 01:17:52

标签: php file synchronized race-condition

我正在使用函数write_php_ini来写文件

在大约40个赞成票中看到接受的答案:

create ini file, write values in PHP

最初我是从这里复制的:

How to read and write to an ini file with PHP

来自不被接受的答案,因为它们看起来很相似

问题是,如果2个进程同时写入它会怎么样? (也就是说,第二篇文章似乎处理它,而第一篇文章没有处理)

如何避免这个问题?

这是代码:

 public static function write_ini_file($assoc_arr, $path, $has_sections=FALSE) {
$content = "";
if ($has_sections) {
  foreach ($assoc_arr as $key=>$elem) {
    $content .= "[".$key."]\n";
    foreach ($elem as $key2=>$elem2) {
      if(is_array($elem2))
      {
        for($i=0;$i<count($elem2);$i++)
        {
          $content .= $key2."[] = \"".$elem2[$i]."\"\n";
        }
      }
      else if($elem2=="") $content .= $key2." = \n";
      else $content .= $key2." = \"".$elem2."\"\n";
    }
  }
}
else {
  foreach ($assoc_arr as $key=>$elem) {
    if(is_array($elem))
    {
      for($i=0;$i<count($elem);$i++)
      {
        $content .= $key."[] = \"".$elem[$i]."\"\n";
      }
    }
    else if($elem=="") $content .= $key." = \n";
    else $content .= $key." = \"".$elem."\"\n";
  }
}

if (!$handle = fopen($path, 'w')) {
  return false;
}

$success = fwrite($handle, $content);
fclose($handle);

return $success;

}

0 个答案:

没有答案