• ベストアンサー

フォルダ容量取得について

こんにちは。質問させて下さい。 同じサーバ内にあるフォルダの容量を取得したいと考えております。フォルダサイズを取得する関数はあるのでしょうか?調べたのですが見当たりませんでした。 もしロジックで行う場合、 その指定のフォルダ内に含まれているファイル一覧を取得して各ファイルサイズを合算することで対応するしかないでしょうか? ちなみにフォルダ内にはフォルダは存在しないものとします。どなたかご存知の方いらっしゃいましたらご教示お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> もしロジックで行う場合、 その指定のフォルダ内に含まれているファイル一覧を取得して各ファイルサイズを合算することで対応するしかないでしょうか? 可能でしょうが、多段階層のフォルダだったりするとクラッときます(笑。 まぁそれは無いと言う事でしたら、ディレクトリ関数でファイル名を取得して、ファイルサイズを合算すれば何とかなるでしょうけど。検証してませんが、 $dirname = "yourdir/path/"; $d = dir($dirname); while (false !== ($entry = $d->read())) { echo "\n<br />"; echo $dirname.$entry; if(! ( $entry == "." || $entry == ".." ) { echo " ". filesize($dirname.$entry); $size += filesize($dirname.$entry); } } $d->close(); echo "\n<br />合計 {$size} byte"; ?> ただし、これでは実際にHDDのブロックをどのくらい占有しているかは分かりません。Linuxならシステムコマンド du を使えば簡単に求められます。これは下位階層があっても使えるという大きなメリットがあります。 <?php $a = exec("du -s -b udon/data/"); if(ereg("([0-9]+)",$a,$reg)){ print_r($reg); echo "合計 {$reg[1]} byte 占有"; } ?> ご参考まで。

参考URL:
http://taketan.mydns.jp/?PHP