ホームページ > バックエンド開発 > PHPチュートリアル > x86 システム上の PHP で 2 GB を超えるファイルのファイル サイズを確認するにはどうすればよいですか?

x86 システム上の PHP で 2 GB を超えるファイルのファイル サイズを確認するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-21 16:35:30
オリジナル
767 人が閲覧しました

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

PHP x86: 外部プログラムなしで 2 GB を超えるファイル サイズを決定する

PHP で 2 GB を超えるファイル サイズを取得する32 ビット プラットフォームでの GB には課題があります。 filesize()、stat()、fseek() などの標準的な PHP 関数では不十分です。

これに対処するために、Big File Tools と呼ばれる包括的なオープンソース プロジェクトが登場しました。これには、32 ビット システム上であっても、PHP で 2 GB を超えるファイルを管理するための独創的なテクニックが含まれています。

ビッグ ファイル ツールで採用されている方法の 1 つは、プラットフォーム固有のシェル コマンドを活用しようとしています。 Windows の場合、シェル置換修飾子を利用します。 *nix および macOS の場合は、stat コマンドを使用します。これらが失敗すると、COM (特に Windows の場合) に移行します。最後の手段として、filesize() に戻ります。

次のコード スニペットは、このアプローチを使用して大きなファイルのファイル サイズを決定する方法を示しています。

<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>
ログイン後にコピー

以上がx86 システム上の PHP で 2 GB を超えるファイルのファイル サイズを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート