PHP에서 2GB이상의 파일크기 정확히 얻기 > 그누보드5 팁자료실

그누보드5 팁자료실

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

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()함수를 이용하는게 더 나은 선택이 아닐가 문의드립니다.
대용량의 파일을 다운로드하고여 사용할때는 퍽 유익하더라구요...

감사합니다.

추천
3

댓글 5개

32bit 운영체제 지원은 기억에서 지우고 있었는데 필요하신분이 계실지도 모르겠네요 ㅎㅎ
file_exists(), function_exists()로 예외처리도 하면 좋을것 같습니다.
전체 9 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT