> 백엔드 개발 > PHP 튜토리얼 > PHP에서 디렉토리 크기를 효율적으로 계산하는 방법은 무엇입니까?

PHP에서 디렉토리 크기를 효율적으로 계산하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-29 13:41:20
원래의
782명이 탐색했습니다.

How to Efficiently Calculate a Directory's Size in PHP?

PHP를 사용하여 디렉터리 크기를 결정하는 방법

하위 디렉터리를 포함한 디렉터리의 크기를 계산하는 것은 파일 관리에 있어 중요한 작업일 수 있습니다. 저장 및 성능. 이 기사에서는 최적화된 접근 방식을 사용하여 PHP에서 이를 달성하는 방법을 보여줍니다.

기존 방법

제공된 PHP 코드 조각은 다음과 같이 디렉토리 크기를 계산합니다. 다음은 다음과 같습니다.

function foldersize($path) {
  $total_size = 0;
  $files = scandir($path);

  foreach($files as $t) {
    if (is_dir(rtrim($path, '/') . '/' . $t)) {
      if ($t<>"." &amp;&amp; $t<>"..") {
          $size = foldersize(rtrim($path, '/') . '/' . $t);

          $total_size += $size;
      }
    } else {
      $size = filesize(rtrim($path, '/') . '/' . $t);
      $total_size += $size;
    }
  }
  return $total_size;
}
로그인 후 복사

최적화

원래 코드에서는 불필요한 재귀 함수 호출 및 중복 파일 존재 확인으로 인해 성능 문제가 나타났습니다. 아래의 최적화된 기능은 이러한 문제를 해결합니다.

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false &amp;&amp; $path!='' &amp;&amp; file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
로그인 후 복사

주요 개선 사항은 다음과 같습니다.

  • realpath를 사용하여 경로 확인
  • 반복 전 경로 유효성 및 파일 존재 확인 .
  • 건너뛰는 중 . 및 .. 디렉터리.
  • FilesystemIterator::SKIP_DOTS 플래그를 사용하여 숨겨진 디렉터리 및 파일 처리를 방지합니다.

사용 예

활용 최적화된 기능:

$path = '/var/www/html/myproject';
$directorySize = GetDirectorySize($path);
echo "Size of '$path': " . format_bytes($directorySize);
로그인 후 복사

이 코드는 지정된 디렉터리의 크기를 측정하고 결과를 사람이 읽을 수 있는 형식으로 표시합니다.

위 내용은 PHP에서 디렉토리 크기를 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿