書き込みに常に2つのファイルに書き込んでおき
開くときにファイルサイズの大きい方を開く。
バックアップがないときも下記で新たに作られる。
function READLIST($readFile){
$readFile=fGETBAK($readFile);
if(file_exists($readFile)){
$LIST=file($readFile);
}
$LIST=array_map('trim',$LIST);
return $LIST;
}
#★★★★★★★★★★★★★★★★★★★★★#
#★★★ バックアップファイル名をGET ★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function fGETBAK($file){
$filebak=$file.".bak";
#####比較###########
if(file_exists($filebak)){
$baksize=filesize($filebak);
}else{
$baksize=0;
}
if(file_exists($file)){
$fsize=filesize($file);
}else{
$fsize=0;
}
if($baksize>$fsize){
#要領が大きいほうを小さい方にコピーする。
copy($filebak,$file);
chmod($file,0766);
$refile=$filebak;
}elseif($baksize<$fsize){
copy($file,$filebak);
chmod($filebak,0766);
$refile=$file;
}
return $refile;
}
#★★★★★★★★★★★★★★★★★★★★★#
#★★★ バックアップファイルにも書き込み ★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function fWRITEBAK($file,$wStr){
if(file_exists($file)){
$fp=fopen($file,"w");#書き込み fpはfileの先頭
}
if($fp){
flock($fp,LOCK_EX);
fwrite($fp,$wStr);
flock($fp,LOCK_UN);#ファイルを閉じる前に実行。
fclose($fp);
}
#さらにバックアップもしておく。
if(file_exists($file.".bak")){
$fp=fopen($file.".bak","w");#書き込み fpはfileの先頭
}
if($fp){
flock($fp,LOCK_EX);
fwrite($fp,$wStr);
flock($fp,LOCK_UN);#ファイルを閉じる前に実行。
fclose($fp);
}
}
コメントする