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

Patricia Arquette
풀어 주다: 2024-10-21 16:49:02
원래의
739명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!