Wie kann ich die Dateigröße von Dateien größer als 2 GB in PHP ermitteln, ohne externe Tools zu verwenden?

Patricia Arquette
Freigeben: 2024-10-21 16:49:02
Original
739 Leute haben es durchsucht

How to Determine File Size of Files Larger Than 2 GB in PHP Without Using External Tools?

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') &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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!