現在の位置: ホーム> 最新記事一覧> 指定されたディレクトリのディスクサイズを取得する4つの実用的な方法

指定されたディレクトリのディスクサイズを取得する4つの実用的な方法

M66 2025-07-26

PHPは、ディレクトリディスクの合計サイズを取得する方法を実装しています

毎日のWeb開発では、クォータの制限、リソース統計、ログ監視などの目的など、ディレクトリ(サブディレクトリを含む)で占有されているディスクスペースを取得する必要がある場合があります。 PHPは、ディレクトリのディスクサイズを簡単に取得するのに役立ついくつかの組み込み関数を提供します。

disk_total_spaceを使用して、総ディスク容量を取得します

disk_total_space()は、ディスクの総容量を直接取得できますが、ディレクトリが実際に占有するサイズではなく、ディスク全体の容量を返すことに注意してください。

 
$directory = "/var/log";
$total_space = disk_total_space($directory);
echo "総ディスク容量:$total_space バイト";

dir()とfilesize()を使用して、ディレクトリファイルサイズを蓄積します

ディレクトリを通過し、 filesize()を使用して各ファイルのサイズを読み取ることにより、実際のディスクスペースをより正確に取得できます。

 
$directory = "/var/log";
$total_size = 0;
if ($dh = opendir($directory)) {
    while (($file = readdir($dh)) !== false) {
        if ($file != "." && $file != "..") {
            $total_size += filesize($directory . "/" . $file);
        }
    }
    closedir($dh);
}
echo "総ディスクサイズ:$total_size バイト";

RecursiveTeratoriteratorを使用して、サイズをカウントします

RecursivedirectoryiteratorRecuriveTeratoriteratorを組み合わせることにより、ディレクトリ内のすべてのファイルのサイズを再帰的に取得できます。これは、ディープディレクトリ構造に適しています。

 
use RecursiveIteratorIterator;
use RecursiveDirectoryIterator;
use SplFileInfo;

$directory = "/var/log";
$total_size = 0;
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($directory),
    RecursiveIteratorIterator::SELF_FIRST
);

foreach ($iterator as $file) {
    if ($file->isFile()) {
        $total_size += $file->getSize();
    }
}
echo "総ディスクサイズ:$total_size バイト";

scandir()とarray_sum()を使用したクイック実装

Scandir()を使用してディレクトリ内のすべてのファイル名を取得し、 array_map()array_sum()を組み合わせて、簡潔な方法で合計サイズを計算できます。ただし、この方法は再帰的にサブディレクトリにすることはできず、並列ディレクトリ統計に適しています。

 
$directory = "/var/log";
$files = scandir($directory);
$total_size = array_sum(array_map("filesize", array_filter(
    array_map(function($file) use ($directory) {
        return $directory . '/' . $file;
    }, $files),
    function($file) {
        return is_file($file);
    }
)));
echo "総ディスクサイズ:$total_size バイト";

パフォーマンス最適化の提案

  • 再帰的なイテレーター方法を使用して、パフォーマンスと精度を考慮することをお勧めします。
  • 大きなフォルダーでは効率的ではないGlov()関数の使用を避けるようにしてください。
  • ディレクトリサイズを頻繁に取得する必要がある場合は、結果をデータベースまたはキャッシュファイルにキャッシュすることを検討してください。

要約します

PHPは、ディレクトリディスクサイズを計算するさまざまな方法を提供し、それぞれに適用可能なシナリオがあります。適切な方法を選択すると、実行効率を改善するだけでなく、コードをより簡潔で信頼性を高めることもできます。開発者は、自分のニーズに応じて柔軟に使用できます。