php – サーバ上のファイルリストを取得して削除する

サーバ上のディレクトリを指定して、中にあるファイルを削除したい!

消したいファイルは適宜判定して削除するなどもできますので、
今回はログファイルの古いものだけ選定して削除する感じのサンプルにしました

cronなどに登録しておいて、自動運用するのがいいですかね

サンプルコード

サンプルです
なお、今回古い日付の判定として、ログファイルの名称で判断します
YYYY-MM-DDで始まるファイル名という前提で書いてますので、あしからず

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$dir = "サーバ上のディレクトリを指定";
 
//日付の設定、1週間前と比較用
$today = date("Y-m-d");
$one_week_ago = date("Y-m-d",strtotime("${today} -1 week"));
 
/*
 * リストの取得と削除対象の選定処理
 */
$file_list = array();
 
//$dirがディレクトリかどうか、ディレクトリを開けるかどうか
if(is_dir($dir) && $handle = opendir($dir)){
 
    //ディレクトリの中身を参照
    while(($file = readdir($handle)) !== false){
        //対象ファイルのパス
        $path = $dir.$file;
 
        //対象がファイルかどうか
        if(filetype($path) == "file"){
            //ファイル名のYYYY-MM-DD部分を取得
            $file_date = substr($file,0,10);
 
            //日付の判定、1週間以上前だったら配列に格納
            if(strtotime($file_date) <= strtotime($one_week_ago)){
                $file_list[] = $path
            }
        }
    }
}
 
/*
 * ファイルの削除
 */
foreach($file_list as $k=>$v){
    unlink($v);
}

ディレクトリの指定とか、対象ファイルの選定など誤ってしまうと思いもよらないファイルをどかーんと消してしまうことも無きにしも非ずなので、その点はご注意を~

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です