RadarURL

PHP 디렉토리 용량 체크 (윈도우 리눅스 공용)

by JaeSoo posted Apr 12, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

<?php

function Yget_dir_size($dir, $debug=false){

  if (!is_dir($dir)) return false;

  if (!preg_match("`/$`", $dir)) $dir .= '/';

  $get_size = 0;

  $d = dir($dir);
  while (false !== ($entry = $d->read())) {

    if (substr($entry, 0, 1) == '.') continue;
   
    if (is_file($dir . $entry)) {

      $get_size += filesize($dir . $entry);
      if ($debug == true) echo $dir . $entry . ' ' . filesize($dir . $entry) . "<br>n";
    }
    else if (is_dir($dir . $entry)){

      $get_size += Yget_dir_size($dir . $entry, $debug);
    }
    else{

      continue;
    }
  }
  $d->close();

  return $get_size;
}


$dir = '용량체크하고픈 디렉토리경로(상대경로 or 절대경로)';
echo Yget_dir_size($dir, true);//개별파일출력을 원할 경우
echo Yget_dir_size($dir);//개별파일출력을 원하지 않을경우

?>



몇가지 첨언을 하자면
Yget_dir_size 이함수는 재귀호출 함수입니다.
해당디렉토리에 다른 디렉토리를 발견하면 자기 자신을 다시 호출합니다.

이함수는 해당 디렉토리를 웹서버가 읽을 수 있을 경우에만 제대로 작동합니다.


--------------------------------------------------------------------------------------------------

지나가다가 슬쩍...

function get_dirsizea($file_dir) {
$size = 0;
$d = dir($file_dir);
while ($entry = $d->read()) {
if ($entry != "." && $entry != "..") $size += filesize("$file_dir/$entry");
}
$d->close();
return $size;
}

 

출처 : http://www.welog.net/gbbs/bbs/board.php?bo_table=php&wr_id=18