현재 위치: > 최신 기사 목록> 지정된 디렉토리의 디스크 크기를 얻는 4 가지 실용적인 방법

지정된 디렉토리의 디스크 크기를 얻는 4 가지 실용적인 방법

M66 2025-07-26

PHP는 디렉토리 디스크의 총 크기를 얻는 방법을 구현합니다.

일일 웹 개발에서 때로는 할당량 제한, 리소스 통계 또는 로그 모니터링과 같은 목적과 같은 디렉토리 (하위 디렉토리 포함)가 차지하는 디스크 공간을 얻어야합니다. PHP는 디렉토리의 총 디스크 크기를 쉽게 얻는 데 도움이되는 몇 가지 내장 기능을 제공합니다.

DISK_TOTAL_SPACE를 사용하여 총 디스크 용량을 얻으십시오

DISK_TOTAL_SPACE ()는 디스크의 총 용량을 직접 얻을 수 있지만 디렉토리가 실제로 차지하는 크기가 아니라 전체 디스크의 용량을 반환합니다.

 
$directory = "/var/log";
$total_space = disk_total_space($directory);
echo "총 디스크 용량:$total_space 바이트";

dir () 및 filesize ()를 사용하여 디렉토리 파일 크기를 축적하십시오

디렉토리를 가로 지르고 filesize ()를 사용하여 각 파일의 크기를 읽으면 디렉토리가 점유 한 실제 디스크 공간을보다 정확하게 얻을 수 있습니다.

 
$directory = "/var/log";
$total_size = 0;
if ($dh = opendir($directory)) {
    while (($file = readdir($dh)) !== false) {
        if ($file != "." && $file != "..") {
            $total_size += filesize($directory . "/" . $file);
        }
    }
    closedir($dh);
}
echo "총 디스크 크기:$total_size 바이트";

리퍼 시티 테이터 레터 레이터를 사용하여 크기를 계산하십시오

리퍼 유형의 이사 레터 레이터재귀 인 테이터 레이터를 결합하면 디렉토리와 하위 디렉터에서 모든 파일의 크기를 재귀 적으로 얻을 수 있으며, 이는 깊은 디렉토리 구조에 적합합니다.

 
use RecursiveIteratorIterator;
use RecursiveDirectoryIterator;
use SplFileInfo;

$directory = "/var/log";
$total_size = 0;
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($directory),
    RecursiveIteratorIterator::SELF_FIRST
);

foreach ($iterator as $file) {
    if ($file->isFile()) {
        $total_size += $file->getSize();
    }
}
echo "총 디스크 크기:$total_size 바이트";

scandir () 및 array_sum ()을 사용한 빠른 구현

Scandir ()는 디렉토리의 모든 파일 이름을 얻고 Array_Map ()Array_Sum ()을 결합하여 총 크기를 간결한 방식으로 계산할 수 있습니다. 그러나이 방법은 재귀 적으로 하위 디렉터가 될 수 없으며 병렬 디렉토리 통계에 적합합니다.

 
$directory = "/var/log";
$files = scandir($directory);
$total_size = array_sum(array_map("filesize", array_filter(
    array_map(function($file) use ($directory) {
        return $directory . '/' . $file;
    }, $files),
    function($file) {
        return is_file($file);
    }
)));
echo "총 디스크 크기:$total_size 바이트";

성능 최적화 제안

  • 재귀 반복자 방법을 사용하여 성능과 정확도를 고려하는 것이 좋습니다.
  • 대형 폴더에서는 효율적이지 않은 Glob () 기능을 사용하지 마십시오.
  • 디렉토리 크기를 자주 가져와야하는 경우 결과를 데이터베이스 또는 캐시 파일로 캐시하는 것을 고려하십시오.

요약

PHP는 각각 해당 시나리오와 함께 디렉토리 디스크 크기를 계산하는 다양한 방법을 제공합니다. 올바른 방법을 선택하면 실행 효율성을 향상시킬뿐만 아니라 코드를보다 간결하고 신뢰할 수 있습니다. 개발자는 자신의 요구에 따라 유연하게 사용할 수 있습니다.