파일, 디스크 파티션 및 디렉터리의 크기를 계산하는 것은 다양한 애플리케이션에서 일반적인 작업입니다. 파일 크기 계산은 앞서 소개한 filesize() 함수를 통해 가능하며, 디스크 크기 계산은 disk_free_space(), disk_total_space() 함수를 사용하여 수행할 수도 있습니다. 그러나 현재 PHP는 디렉토리의 전체 크기에 대한 표준 기능을 제공하지 않으므로 이 작업을 완료하려면 기능을 사용자 정의해야 합니다. 먼저, 계산된 디렉터리에 다른 하위 디렉터리가 포함되어 있는지 고려합니다. 하위 디렉터리가 없으면 디렉터리에 있는 모든 파일의 크기를 합한 것이 해당 디렉터리의 크기입니다. 하위 디렉터리가 포함되어 있으면 이 방법을 사용하여 하위 디렉터리의 크기를 계산하세요. 이 작업에는 재귀 함수를 사용하는 것이 가장 좋습니다. 디렉토리 크기를 계산하는 사용자 정의 함수는 다음과 같습니다.
//전달된 매개변수의 디렉토리 크기를 계산하기 위해 dirSize() 함수를 사용자 정의
함수 dirSize($directory){
$dir_size = 0; //각 파일의 크기를 누적하는데 사용됩니다
If($dir_handle = @opendir($directory)){ //디렉토리를 열고 성공적으로 열 수 있는지 확인
While($filename = readdir($dir_handle)){ //디렉터리의 모든 파일을 반복합니다
If($filename != "."&& $filename != ".."){ //두 개의 특수 디렉토리를 제외해야 합니다
$subFile = $directory."/".$filename;
If (IS_DIR ($ Subfile)) // 디렉토리
> >
If(is_file($subFile)) //파일인 경우
$ DIR_SIZE = FILESIZE ($ Subfile); // 파일 크기를 찾아 누적
}
}
closeir($dir_handle); //파일 리소스 닫기
Return $dir_size; //계산된 디렉터리 크기를 반환합니다
}
}
$dir_size = dirSize("phpMyAdmin"); //디렉터리 크기를 계산하려면 이 함수를 호출하세요
echo round($dir_size/pow(1024,1),2)."KB"; //바이트 수를 "KB" 단위로 변환하여 출력
?>
exec() 또는 system() 함수를 사용하여 운영 체제 명령 "du"를 호출하여 디렉터리 크기를 반환할 수도 있습니다. 그러나 이러한 기능은 일반적으로 보안상의 이유로 비활성화되어 있으며 크로스 플랫폼 작동에 도움이 되지 않습니다.