s

PHP에서 2GB이상의 파일크기 정확히 얻기

PHP가 제공해주는 filesize()함수는 일부 OS(부호화된 32비트 정수형체계를 이용하는 플랫폼들)에서는 2GB이상 되는 파일의 크기를 정확히 출력해주지 못합니다.
왜냐문 당연히 부호화된 32비트체계에서는 PHP가 다룰수 있는 정수값의 범위가 -2 147 483 647 부터 2 147 483 647 까지로, 2GB이상을 담을수 없기때문입니다.
여러가지 플랫폼에 무관하게 대용량 파일의 크기를 빠르고 쉽게 얻을수 있는 함수를 공개합니다.

    function getFileSize($file) {
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
            $size = trim(exec("for %F in (\"" . $file . "\") do @echo %~zF"));
        }
        elseif ((PHP_OS == 'Linux') || (PHP_OS == 'FreeBSD') || (PHP_OS == 'Unix') || (PHP_OS == 'SunOS')) {
            $size = trim(shell_exec("stat -c%s " . escapeshellarg($file)));
        } else {
            $size = filesize($file);
        }
        return $size;
    }

로직은 간단하죠.
콘솔지령으로 파일의 크기를 제한 없이 추출했습니다.

그누보드에서는 게시판의 파일을 다운로드하는데 filesize()함수를 이용하던데, 물론 용량제한으로 2GB이상의 파일을 취급 안 하지만, 확장성을 고려하여 filesize()함수 대신 getFileSize()함수를 이용하는게 더 나은 선택이 아닐가 문의드립니다.
대용량의 파일을 다운로드하고여 사용할때는 퍽 유익하더라구요...

감사합니다.

|

댓글 5개

좋은 정보 고맙습니다.
32bit 운영체제 지원은 기억에서 지우고 있었는데 필요하신분이 계실지도 모르겠네요 ㅎㅎ
file_exists(), function_exists()로 예외처리도 하면 좋을것 같습니다.
쑤꾸웹~~~
캄사합니다~~
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

+
제목 글쓴이 날짜 조회
5년 전 조회 3,452
5년 전 조회 4,897
5년 전 조회 5,579
5년 전 조회 5,265
5년 전 조회 4,559
5년 전 조회 3,071
5년 전 조회 5,710
5년 전 조회 5,388
5년 전 조회 4,509
5년 전 조회 2,982
5년 전 조회 3,800
5년 전 조회 5,141
5년 전 조회 3,600
5년 전 조회 4,634
5년 전 조회 2,976
5년 전 조회 3,902
5년 전 조회 2,928
5년 전 조회 3,023
5년 전 조회 3,438
5년 전 조회 4,994
5년 전 조회 4,893
5년 전 조회 4,043
5년 전 조회 5,296
5년 전 조회 4,432
5년 전 조회 4,542
5년 전 조회 8,223
5년 전 조회 3,776
5년 전 조회 4,386
5년 전 조회 1.2만
5년 전 조회 3,253