指定の時間を経過した古いファイルを削除したいとき(PHP)

·

処理をしていて発生する、一時ファイル(キャッシュやtempなど)の中で
定期的に削除が必要なもの、古いユーザーデータやログファイル等を
削除するためのサンプルスクリプト。

下記のサンプルスクリプトをファイルとして保存し、1日1回cronで回してやるといい。
必要に応じて対象のディレクトリ名や削除日数は変更して使用してもらいたい。
$debug = 1;
にするとデバッグモードになるから、事前にテストすることをお薦めする。

なお、このスクリプトはファイルを削除するものであり、設定ミスやバグにより
大事なファイルを削除してしまうこともありうる。使用は自己責任で。

【サンプル】

<?php

#——————————————————

$now = time();

#——————————————————

$cache_dir = “../cache/”;
$day = 7;
$debug = 0;

$num = clear_cache_file($cache_dir,$day,$debug);
echo “$num ファイル削除しました。”;

#——————————————————

function clear_cache_file($cache_dir,$day,$debug){
    global $now;
    
    $count = 0;
    if(!($dir = @opendir($cache_dir))){die(“$cache_dir が開けません。”);}
    while($file = readdir($dir)){
        if(!is_dir($file)){
            $name = $cache_dir . $file;
            $mtime = filemtime($name);
            if(($now – $mtime) >= $day*60*60*24){
                if(file_exists($name)){
                    if($debug){
                        $mtime_ymd = date(“Y-m-d H:i:s”, $mtime);
                        echo “$name ($mtime_ymd)を削除します。<br />”;
                    }else{
                        unlink($name);
                    }
                    $count++;
                }
            }
        }
    }
    closedir($dir);
   
    return $count;
}

#——————————————————

?>