Entries

ログファイル更新用サブルーチン

せっかくプログラムというカテゴリーを作ったので一つどうでも良いプログラムを置いてみます。


//update_file(ファイルの相対パス, 書き込むデータ, 区切り文字, モード)
//新しいデータは常に一番上に表示される。
//書き込むデータの先頭のデータが同じ場合は取り除く。
//モードが1の場合はデータを書き込む。
//モードが0の場合は削除のみ行う。
function update_file($file_pass, $update_data, $split, $mode){

//初期設定
if(!$log_file = file($file_pass)){return FALSE;}
$seve_log = array();
if(is_array($update_data)){
$new_log = $update_data;
}
else{
$new_log = array($update_data);
}

//データの形に変換
$new_data = join($split, $new_log);
$new_data .= "$split\n";

//データがすでに存在しているか調べて、もし存在していたらそのデータを抜く
if(!$file_log = file($file_pass)){return FALSE;}
foreach($file_log as $val){
list($id, $ex) = split($split, $val);
if($id != array_shift($new_log);){
$seve_log[] = $val;
}
}

//モードが書き込みなら新しいデータを一番上に加える
if($mode == 1){
array_unshift($seve_log, $new_data);
}

//配列を上書きする
if(!$fp = fopen("$file_pass","w")){return FALSE;}
flock($fp, LOCK_EX);
foreach($seve_log as $val){
fputs($fp, $val);
}
fclose($fp);
return TRUE;
}


まぁ、私がPerlからPHPに移ったときに、配列が保存できねー!!とか思って作ったものです。
その後色々改造(改良ではない)したのですが、PHPでデータベースが使えないサーバ(あるんだろうか?)では便利かな?っと思います……ってかもっといいものも探せばあるでしょうねw

0件のコメント

コメントの投稿

新規
投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://nanase0013.blog78.fc2.com/tb.php/4-aa17292c
この記事に対してトラックバックを送信する(FC2ブログユーザー)