>  기사  >  백엔드 개발  >  외부 도구를 사용하지 않고 PHP에서 2GB보다 큰 파일의 파일 크기를 확인하는 방법은 무엇입니까?

외부 도구를 사용하지 않고 PHP에서 2GB보다 큰 파일의 파일 크기를 확인하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-21 16:49:02740검색

How to Determine File Size of Files Larger Than 2 GB in PHP Without Using External Tools?

파일 크기 가져오기 > 외부 프로그램 없이 PHP의 2GB 파일

filesize(), stat() 및 fseek()와 같은 파일 크기를 결정하는 기본 방법은 2GB를 초과하는 파일 크기를 정확하게 캡처하지 못합니다. GB. 그러나 오픈 소스 프로젝트인 Big File Tools를 활용하는 실행 가능한 솔루션이 PHP 32비트 플랫폼 내에 존재합니다.

Big File Tools: 포괄적인 솔루션

Big File 도구에는 2GB보다 큰 파일을 조작하기 위해 특별히 설계된 다양한 기술이 포함됩니다. 이 플랫폼 독립적인 라이브러리는 초기에 시스템별 셸 명령을 활용하려고 시도하는 강력한 접근 방식을 제공합니다. 셸 명령을 사용할 수 없는 시나리오에서는 Windows COM을 사용하거나 filesize()를 사용합니다.

솔루션 구현

다음 PHP 코드는 Big을 구현하는 방법을 보여줍니다. 파일 도구 솔루션:

<code class="php">/*
 * This software may be modified and distributed under the terms
 * of the MIT license.
 */

function filesize64($file)
{
    static $iswin;
    if (!isset($iswin)) {
        $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
    }

    static $exec_works;
    if (!isset($exec_works)) {
        $exec_works = (function_exists('exec') &amp;&amp; !ini_get('safe_mode') &amp;&amp; @exec('echo EXEC') == 'EXEC');
    }

    // try a shell command
    if ($exec_works) {
        $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : "stat -c%s \"$file\"";
        @exec($cmd, $output);
        if (is_array($output) &amp;&amp; ctype_digit($size = trim(implode("\n", $output)))) {
            return $size;
        }
    }

    // try the Windows COM interface
    if ($iswin &amp;&amp; class_exists("COM")) {
        try {
            $fsobj = new COM('Scripting.FileSystemObject');
            $f = $fsobj->GetFile( realpath($file) );
            $size = $f->Size;
        } catch (Exception $e) {
            $size = null;
        }
        if (ctype_digit($size)) {
            return $size;
        }
    }

    // if all else fails
    return filesize($file);
}</code>

이 구현을 통해 외부 프로그램 없이도 2GB를 초과하는 파일의 정확한 파일 크기 결정이 보장됩니다.

위 내용은 외부 도구를 사용하지 않고 PHP에서 2GB보다 큰 파일의 파일 크기를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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