0

Webサーバーに.htmlファイルが保存されている「キャッシュ」フォルダーがあります。ファイル構造は次のとおりです。

cache > user@gmail.com > several .html files.

ユーザーフォルダ内のすべてのサブディレクトリを参照し、3か月以上前のファイルを削除するPHPスクリプトが必要です。

私はこれまでにこのスクリプトを持っています:

$DIR = '/cache/';
if ($handle = opendir($DIR)) {

    while (false !== ($file = readdir($handle))) {
        if ( filemtime($DIR.$file) <= time()-60*60*24*120 ) { //120 days?
           unlink($DIR.$file);
        }
    }

    closedir($handle);
}

ただし、サブディレクトリは処理しません。また、ディレクトリのリンクを解除しようとしているため、エラーが発生します。

更新:カウント機能を追加しようとしています:

<?php

rrmdir(/www/deletecontentsofthisfolder/);
echo $count . ' files deleted!';

function rrmdir($dir,$count=0) 
{
    if (is_dir($dir)) 
    {
        $objects = scandir($dir);
        foreach ($objects as $object) 
        {
            if ($object != "." && $object != "..") 
            {
                if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object,$count);
                if (filemtime($dir."/".$object) <= time()-60*60*24*120) @unlink($dir."/".$object); count++
            }
        }
        reset($objects);
        //rmdir($dir);
    }
return $count;
}
4

1 に答える 1

7
function rrmdir($dir) 
{
    if (is_dir($dir)) 
    {
        $objects = scandir($dir);
        foreach ($objects as $object) 
        {
            if ($object != "." && $object != "..") 
            {
                if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object);
                if (filemtime($dir."/".$object) <= time()-60*60*24*120) @unlink($dir."/".$object);
            }
        }
        reset($objects);
        //rmdir($dir);
    }
}
于 2013-01-06T14:32:01.937 に答える