Ermitteln der Dateigröße von > 2 GB Dateien in PHP ohne externe Programme
Die Standardmethoden zur Bestimmung der Dateigröße, wie filesize(), stat() und fseek(), können die Größe von Dateien über 2 nicht genau erfassen GB. Es gibt jedoch eine praktikable Lösung innerhalb von PHP-32-Bit-Plattformen, die das Open-Source-Projekt Big File Tools nutzen.
Big File Tools: Eine umfassende Lösung
Big File Tools umfassen eine Reihe von Techniken, die speziell für die Bearbeitung von Dateien mit mehr als 2 GB entwickelt wurden. Diese plattformunabhängige Bibliothek bietet einen robusten Ansatz und versucht zunächst, systemspezifische Shell-Befehle zu nutzen. In Szenarien, in denen Shell-Befehle nicht verfügbar sind, wird Windows COM verwendet oder auf filesize() zurückgegriffen.
Implementierung der Lösung
Der folgende PHP-Code zeigt, wie man Big implementiert File Tools-Lösung:
<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>
Diese Implementierung gewährleistet eine genaue Bestimmung der Dateigröße für Dateien über 2 GB, ohne dass externe Programme erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie kann ich die Dateigröße von Dateien größer als 2 GB in PHP ermitteln, ohne externe Tools zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!