Heim >Backend-Entwicklung >PHP-Tutorial >Wie ermittelt man die Dateigröße von Dateien über 2 GB in PHP auf x86-Systemen?

Wie ermittelt man die Dateigröße von Dateien über 2 GB in PHP auf x86-Systemen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-21 16:35:30756Durchsuche

How to Determine File Size of Files Over 2 GB in PHP on x86 Systems?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn