해당하는 폴더 전체 용량을 구할 수 있는 사용자 함수입니다.

<?php
 // 폴더 전체용량
 function dirsize($dir){
       static $size, $cnt;
       $fp = opendir($dir);
       while(false !== ($entry = readdir($fp))){
             if(($entry != ".") && ($entry != "..")){
                  if(is_dir($dir.'/'.$entry)){
                       clearstatcache();
                       dirsize($dir.'/'.$entry);
                  } else if(is_file($dir.'/'.$entry)){
                       $size += filesize($dir.'/'.$entry);
                       clearstatcache();
                       $cnt++;
                  }
             }
       }
      closedir($fp);

      $stat = array(
                'size' => $size,
                'cnt' => $cnt
      );
      return $stat;
 } // end func

 function attach($size) {
      if($size < 1024){
            return number_format($size*1.024).'b';
      } else if(($size > 1024) && ($size < 1024000)){
            return number_format($size*0.001024).'Kb';
      } else if($size > 1024000){
            return number_format($size*0.000001024,2).'Mb';
      }
      return 0;
 }

 // 사용법: $arr = dirsize(폴더 경로);
 // $arr['cnt'] <- 총 파일 수, $arr['size'] <- 총 용량 수
 $stat = dirsize('./includes');

 echo "총 파일수: ".$stat['cnt']." 총 파일 용량: ".attach($stat['size']);
 ?>

0 댓글