>백엔드 개발 >PHP 튜토리얼 >x86 시스템의 PHP에서 2GB가 넘는 파일의 파일 크기를 확인하는 방법은 무엇입니까?

x86 시스템의 PHP에서 2GB가 넘는 파일의 파일 크기를 확인하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-21 16:35:30754검색

How to Determine File Size of Files Over 2 GB in PHP on x86 Systems?

PHP x86: 외부 프로그램 없이 2GB를 초과하는 파일 크기 확인

PHP에서 2GB보다 큰 파일의 파일 크기 검색 32비트 플랫폼의 GB는 문제가 됩니다. filesize(), stat(), fseek()와 같은 표준 PHP 함수는 부족합니다.

이 문제를 해결하기 위해 Big File Tools라는 포괄적인 오픈 소스 프로젝트가 등장했습니다. 여기에는 32비트 시스템에서도 PHP로 2GB가 넘는 파일을 관리할 수 있는 독창적인 기술이 포함되어 있습니다.

Big File Tools에서 사용하는 한 가지 방법은 플랫폼별 셸 명령을 활용하는 것입니다. Windows의 경우 쉘 대체 수정자를 활용합니다. *nix 및 macOS의 경우 stat 명령을 사용합니다. 이것이 실패하면 COM(특히 Windows의 경우)으로 전환됩니다. 최후의 수단으로 filesize()로 되돌아갑니다.

다음은 이 접근 방식을 사용하여 대용량 파일의 파일 크기를 결정하는 방법을 보여주는 코드 조각입니다.

<code class="php">function filesize64($file)
{
    $size = null;

    // Try shell command
    if (function_exists('exec') && !ini_get('safe_mode')) {
        $cmd = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') ? "for %F in (\"$file\") do @echo %~zF" : "stat -c%s \"$file\"";
        @exec($cmd, $output);
        if (is_array($output) && ctype_digit($size = trim(implode("\n", $output)))) {
            return $size;
        }
    }

    // Try Windows COM interface
    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && class_exists("COM")) {
        try {
            $fsobj = new COM('Scripting.FileSystemObject');
            $f = $fsobj->GetFile(realpath($file));
            $size = $f->Size;
        } catch (Exception $e) {}
        if (ctype_digit($size)) {
            return $size;
        }
    }

    // Fall back to filesize()
    return filesize($file);
}</code>

위 내용은 x86 시스템의 PHP에서 2GB가 넘는 파일의 파일 크기를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.