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);

?>