Получить отчет по файлам на PHP
Отчет по файлам в папке и всех вложенных
Пример результата:
Путь поиска файлов: /home/site/public_html/upload
Количество фалов: 102502
Вес всех файлов: 34.567 Gb
Средний размер файла: 353.618 Kb
Количество фалов свыше 100 Кб: 63386
Количество фалов свыше 200 Кб: 34627
Количество фалов свыше 300 Кб: 29470
Количество фалов свыше 500 Кб: 19815
Количество фалов свыше 1 Мб: 29
Скрипт:
<?php
// **************************************************
// Путь поиска файлов:
$pathSearch = __DIR__ . "/upload";
// **************************************************
function fnScanDir($dir, $desc = false) {
$r = array();
$dh = @opendir($dir);
if ($dh) {
while (($fname = readdir($dh)) !== false) {
if ($fname == "." || $fname == "..") {
continue;
}
$r[$fname] = $fname;
}
closedir($dh);
if ($desc) {
arsort($r);
} else {
asort($r);
}
}
return array_keys($r);
}
function fnGetSize($path) {
global $allSize, $maxSize, $countFiles, $countFilesBolee100Kb, $countFilesBolee200Kb, $countFilesBolee300Kb, $countFilesBolee500Kb, $countFilesBolee1Mb;
$r = fnScanDir($path);
foreach ($r as $f) {
$nPath = "{$path}/{$f}";
if (is_dir($nPath)) {
fnGetSize($nPath);
continue;
}
$fSize = filesize($nPath);
$allSize = $allSize + $fSize;
if ($maxSize < $fSize) {
$maxSize = $fSize;
}
$countFiles++;
if ($fSize >= 102400) {
$countFilesBolee100Kb++;
}
if ($fSize >= 204800) {
$countFilesBolee200Kb++;
}
if ($fSize >= 307200) {
$countFilesBolee300Kb++;
}
if ($fSize >= 512000) {
$countFilesBolee500Kb++;
}
if ($fSize >= 10485760) {
$countFilesBolee1Mb++;
}
}
}
function fnGetSizeName($size) {
if ($size > 1073741824) {
return round($size / 1073741824, 3) . " Gb";
} else if ($size > 10485760) {
return round($size / 10485760, 3) . " Mb";
} else if ($size > 1024) {
return round($size / 1024, 3) . " Kb";
} else {
return $size . " b";
}
}
$allSize = 0;
$maxSize = 0;
$countFiles = 0;
$countFilesBolee100Kb = 0;
$countFilesBolee200Kb = 0;
$countFilesBolee300Kb = 0;
$countFilesBolee500Kb = 0;
$countFilesBolee1Mb = 0;
print "Путь поиска файлов: {$pathSearch}\n";
fnGetSize($pathSearch);
if ($countFiles <= 0) {
print "Не найдено ни одно файла";
goto endScript;
}
$averageSize = round($allSize / $countFiles);
print "Количество фалов: " . $countFiles . "\n";
print "Вес всех файлов: " . fnGetSizeName($allSize) . "\n";
print "Средний размер файла: " . fnGetSizeName(round($allSize / $countFiles)) . "\n";
print "Количество фалов свыше 100 Кб: " . $countFilesBolee100Kb . "\n";
print "Количество фалов свыше 200 Кб: " . $countFilesBolee200Kb . "\n";
print "Количество фалов свыше 300 Кб: " . $countFilesBolee300Kb . "\n";
print "Количество фалов свыше 500 Кб: " . $countFilesBolee500Kb . "\n";
print "Количество фалов свыше 1 Мб: " . $countFilesBolee1Mb . "\n";
endScript: