ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    PHPでディレクトリの容量を計算する方法

    このエントリーを含むはてなブックマーク はてなブックマーク - PHPでディレクトリの容量を計算する方法 あとで読む
    PHPでWEBサーバのディレクトリー(フォルダ)の使用容量を取得するには、どうしたら良いだろうか?

    php ディレクトリの容量を調べる

    <?php
    function dir_size($dir)
    {
    $handle = opendir($dir);
    while ($file = readdir($handle)) {
    if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
    $mas += filesize($dir.'/'.$file);
    } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
    $mas += dir_size($dir.'/'.$file);
    }
    }
    return $mas;
    }
    ?>



    ・ディレクトリーの中にあるファイルの容量を取得して、合算していく。
    ・ディレクトリーの中に、さらにディレクトリーがあれば、再帰的に処理する。
    これでOKですね。

    PHP/フォルダ内の容量計算

    実際にHDDのブロックをどのくらい占有しているかは分からない。
    Linuxならシステムコマンド du を使えば簡単に求められる。

    <?php
    $a = exec("du -s -b udon/data/");
    if(ereg("([0-9]+)",$a,$reg)){
    print_r($reg);
    echo "合計 {$reg[1]} byte 占有";
    }
    ?>



    ・ファイルの容量を合算しただけでは、HDDの使用容量より小さい値になる。
    =ファイルのサイズによっては、HDDのセクタにデータが書き込まれていない空の領域(端切れ)が生じるので、その分だけ余計にHDDの容量を消費している。
    ・PHPのexec関数が使えるWEBサーバなら、Linuxのシステムコマンド「du」を使えばOK

    なるほど!

    PHPのドリルPHPのドリル
    (2009/03)
    ミューテック

    商品詳細を見る
    関連記事

    コメント

    if文が冗長に思えます。

    if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
    $mas += filesize($dir.'/'.$file);
    } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
    $mas += dir_size($dir.'/'.$file);
    }



    if ($file != "." && $file != "..") {
    if (!is_dir($dir.'/'.$file)) {
    $mas += filesize($dir.'/'.$file);
    }
    else {
    $mas += dir_size($dir.'/'.$file);
    }
    }

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/323-5b76ae71

    FC2Ad