Есть данный скрипт:
<?php
function getFilesSize($path)
{
$fileSize = 0;
$dirr = scandir($path);
foreach($dirr as $file)
{
if (($file!='.') && ($file!='..'))
if(is_dir($path . '/' . $file))
$fileSize += getFilesSize($path.'/'.$file);
else
$fileSize += filesize($path . '/' . $file);
}
return $fileSize;
}
function tree($dirName) {
$tree = [];
$dir = opendir($dirName);
while (($entry = readdir($dir)) !== false) {
if ($entry === '.' || $entry === '..') {
continue;
}
$fullName = "{$dirName}\\{$entry}";
if (is_dir($fullName)) {
$tree[] = [
'type' => 'dir',
'name' => $entry,
'size' => getFilesSize($dirName),
'data' => tree($fullName)
];
} else {
$tree[] = [
'type' => 'file',
'name' => $entry,
'data_change' => time(),
'size' => filesize($fullName),
'hash' => md5_file($fullName)
];
}
}
return $tree;
}
file_put_contents("update.json", (json_encode(tree('C:\MY_PROJECT'), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)));
?>
Он записывает JSON файл с рекурсией директорий с их размером:
Но запись размера делает он это почему-то по 2 раза и более...
В первой директории правильный общий размер, а в следующей идёт такой-же и этот же размер может повторяются ещё несколько раз...