如何获得一个月修改的文件夹中文件的数量

时间:2018-11-29 10:16:32

标签: php

如何每月获取一个文件夹中修改的文件数

我有一个包含音频剪辑的文件夹,我想每月对该文件进行报告,并在该文件夹中上载或更新年份

$dir="uploads/audio/";
$result=get_files_report_monthly($dir); 
foreach( $result as $key=>$val )
{ 
$time = date("Y/m",filemtime($val));
echo "<br/>";
echo $filesize  = filesize($val);
echo "<br/>";
clearstatcache();

}

我正在调用的功能

function get_files_report_monthly($directory, $result = array())
{
$directory = realpath($directory);
$directory_content = glob($directory.'/*');
foreach($directory_content as $item) {
if(is_dir($item)) {
$result = get_updated_files($item, $result);
} elseif(strtotime($date) < filemtime($item)) {
$result[] = $item;
}
}
return $result;
}

输出

2018/10
384340
2018/10
384340
2018/10
384340
2018/10
384340
2018/10
384340
2018/10
384340

Desire Out is as 

Month    -    Files -      Size 

2016-Jan     38          999999999

2016-Feb     99          999999999

2 个答案:

答案 0 :(得分:0)

在这里,我对您现有的代码进行了一些更改,它应该可以工作。

$result = get_files_report_monthly($dir); 
foreach( $result as $key=>$val )
{ 
    echo $key.' '.$val['count'].' '.$val['size'];
    echo "<br>";
}

function get_files_report_monthly($directory, $result = array())
{
    $directory = realpath($directory);
    $directory_content = glob($directory.'/*');
    foreach($directory_content as $item) {
        $modified_time  =   filemtime($item);
        $modified_at    =   date('Y-M',$modified_time);
        if(isset($result[$modified_at])){
            $result[$modified_at]['count']  =   $result[$modified_at]['count'] + 1;
            $result[$modified_at]['size']   =   $result[$modified_at]['size'] + filesize($item);
        }
        else{
            $result[$modified_at]['count']  =   1;
            $result[$modified_at]['size']   =   filesize($item);
        }
    }
    return $result;
}

答案 1 :(得分:0)

也许这段代码会有所帮助     

foreach(get_files_report_monthly(__DIR__) as $key=>$month) {
   printf("%s %d %d",$key, $month['count'], $month['size']); 
}

function get_files_report_monthly($dir)
{
    $result = [];
    foreach (new DirectoryIterator($dir) as $file) {
        if ($file->isFile()) {
            $month = date('Y-M', $file->getMTime());
            switch (isset($result[$month])) {
                case true:
                    $result[$month]['count'] += 1;
                    $result[$month]['size'] += $file->getSize();
                    break;
                case false:
                    $result[$month]['count'] = 1;
                    $result[$month]['size'] = $file->getSize();
            }
        }
    }
    return $result;
}