外部ツールを使用せずに PHP で 2 GB を超えるファイルのファイル サイズを確認する方法

Patricia Arquette
リリース: 2024-10-21 16:49:02
オリジナル
832 人が閲覧しました

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

ファイル サイズの取得 >外部プログラムを使用しない PHP の 2 GB ファイル

filesize()、stat()、fseek() などのファイル サイズを決定するデフォルトの方法では、2 GB を超えるファイルのサイズを正確にキャプチャできません。 GB。ただし、PHP 32 ビット プラットフォームには、オープンソース プロジェクトである Big File Tools を利用した実行可能なソリューションが存在します。

Big File Tools: 包括的なソリューション

Big Fileツールには、2 GB を超えるファイルを操作するために特別に設計されたさまざまなテクニックが含まれています。このプラットフォームに依存しないライブラリは堅牢なアプローチを提供し、最初はシステム固有のシェル コマンドを活用しようとします。シェル コマンドが使用できないシナリオでは、Windows COM を使用するか、filesize() を使用します。

ソリューションの実装

次の PHP コードは、大きなサイズを実装する方法を示しています。ファイル ツール ソリューション:

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

この実装により、外部プログラムを必要とせずに、2 GB を超えるファイルのファイル サイズを正確に決定できます。

以上が外部ツールを使用せずに PHP で 2 GB を超えるファイルのファイル サイズを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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