파일 크기 가져오기 > 외부 프로그램 없이 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') && !ini_get('safe_mode') && @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) && ctype_digit($size = trim(implode("\n", $output)))) { return $size; } } // try the Windows COM interface if ($iswin && 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!