書き込みに常に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); } }
コメントする