Blog スタッフブログ

PHP システム開発

[PHP]特定ディレクトリ内のログ等の古いファイル名のファイル削除

システム開発担当のTFです。

やり方

  • glob関数で、特定ディレクトリ内のファイル名全てを配列に格納する
  • 必要なファイルを残し、ファイル確認後古いファイルをunlink関数で削除する

メモ

glob関数は、パスも取れる
basename関数を使うと、ファイル名だけ取得可能

サンプル

<?php
	// logディレクトリ内のファイル名一覧の取得
	// ファイル名は、 YYYYmmdd.log とする
	$files = glob('log/*.csv');
	

	// 例1) 10世代残す
		// ファイル名の降順ソート
		rsort($files);
		$remain_cnt = 10;
		foreach($files AS $file){
			if( $remain_cnt <= 0 ){
				// 古いファイルの削除
				if( file_exists($file) ){
					unlink($file);
				}
			}
			else{
				$remain_cnt--;
			}
		}
	
	// 例2) 1カ月残す
		// ファイル名の昇順ソート
		sort($files);
		foreach($files AS $file){
			// ファイル名から日付取得
			$file_name = basename($file);
			$date = str_replace(".csv", "", $file_name);
			
			// 判定
			if( $date < date('Ymd', strtotime("-1 month")) ){
				// 古いファイルの削除
				if( file_exists($file) ){
					unlink($file);
				}
			}
			else{
				break;
			}
		}
	
?>