Tamanho de diretório no PHP
<?
function dir_size( $dir ) {
if( !$dir or !is_dir( $dir ) ) { return 0; }
$ret = 0; $sub = opendir( $dir ); while( $file = readdir( $sub ) ) { if( is_dir( $dir . '/' . $file ) && $file !== ".." && $file !== "." ) { $ret += dir_size( $dir . '/' . $file ); unset( $file ); } elseif( !is_dir( $dir . '/' . $file ) ) { $stats = stat( $dir . '/' . $file ); $ret += $stats['size']; unset( $file ); } } closedir( $sub ); unset( $sub ); return $ret;
}
echo dir_size(“D:/teste”);
?>
< ?php
// MAIS UMA ÓTIMA FUNÇÃO PARA LER O TAMANHO DE UM DIRETÓRIO
function DirStat($directory) { global $FolderCount, $FileCount, $FolderSize;
chdir($directory); $directory = getcwd(); if($open = opendir($directory)) { //while($file = readdir($open)) { while(false !== ($file = readdir($open))) { if($file == ‘..’ || $file == ‘.’) continue; if(is_file($file)) { $FileCount++; $FolderSize += filesize($file); } elseif(is_dir($file)) { $FolderCount++; } } if($FolderCount > 0) { $open2 = opendir($directory); while($folders = readdir($open2)) { $folder = $directory.’/’.$folders; if($folders == ‘..’ || $folders == ‘.’) continue; if(is_dir($folder)) { DirStat($folder); } } closedir($open2); } closedir($open); } }
function ByteSize($bytes) { $size = $bytes / 1024; if($size < 1024){ $size = number_format($size, 2); $size .= ‘kb’; } else { if($size / 1024 < 1024) { $size = number_format($size / 1024, 2); $size .= ‘mb’; } elseif($size / 1024 / 1024 < 1024) { $size = number_format($size / 1024 / 1024, 2); $size .= ‘gb’; } else { $size = number_format($size / 1024 / 1024 / 1024, 2); $size .= ‘tb’; } } return $size; }
$folder = ‘D:/1Enviar/Hoje’; $dir = getcwd(); DirStat($folder, 0); chdir($dir); $FolderSize = ByteSize($FolderSize);
echo ‘Folder Name: ‘.$folder.’
‘.chr(10); echo ‘File Count: ‘.$FileCount.’
‘.chr(10); echo ‘Folder Size:‘.$FolderSize.’
‘.chr(10);
?>