Heim >Backend-Entwicklung >PHP-Tutorial >Wie ermittelt man die Dateigröße von Dateien über 2 GB in PHP auf x86-Systemen?
PHP x86: Bestimmen der Dateigröße von Dateien über 2 GB ohne externe Programme
Abrufen der Dateigröße von Dateien größer als 2 GB auf 32-Bit-Plattformen stellt eine Herausforderung dar. Standard-PHP-Funktionen wie filesize(), stat() und fseek() reichen nicht aus.
Um dieses Problem zu beheben, wurde ein umfassendes Open-Source-Projekt namens Big File Tools ins Leben gerufen. Es umfasst ausgeklügelte Techniken zum Verwalten von Dateien über 2 GB in PHP, sogar auf 32-Bit-Systemen.
Eine von Big File Tools verwendete Methode versucht, plattformspezifische Shell-Befehle zu nutzen. Für Windows werden Shell-Ersetzungsmodifikatoren verwendet. Für *nix und macOS wird der Befehl stat verwendet. Wenn dies fehlschlägt, wird auf COM umgestellt (speziell für Windows). Als letzten Ausweg wird auf filesize() zurückgegriffen.
Hier ist ein Codeausschnitt, der zeigt, wie Sie mit diesem Ansatz die Dateigröße einer großen Datei ermitteln können:
<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>
Das obige ist der detaillierte Inhalt vonWie ermittelt man die Dateigröße von Dateien über 2 GB in PHP auf x86-Systemen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!