PHPで次のようなものを調べたいとき、、、
- ディスク使用量、
- ディスク空き容量
- 全体のディスク容量
PHPから直接【✕✕GB】とか調べることは可能です。
ですが・・・調べ方によって結果が全く違うので要注意!
そういう注意点とかも含め、
ここでは PHPでディスク使用量など調べる方法&コード例 まとめました。
主に 使用量 を調べる方法になります。
このページの目次
1.disk_total_space, disk_free_space で計算する方法
1つめは専用関数を使った計算方法
次の2つの関数を使ったやり方です。
- disk_total_space
=> ディスクの全体サイズを返す
- disk_free_space
=> ディスク上で利用可能な領域を返す
使用容量は 全体 ー 空き で計算可能、という感じ
実際に書いてみたコードですが、次の通りになります。
▼ ディスク使用量・空き容量を調べてみた
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$root = '/home/www/'; $total = disk_total_space($root); $free = disk_free_space($root); $used = $total - $free; echo '全体容量 : '.format_bytes($total); echo '空き容量 : '.format_bytes($free); echo '使用容量 : '.format_bytes($used); /// バイト数を精度指定して単位付きで返す function format_bytes($bytes, $precision = 2) { $units = ['B', 'KB', 'MB', 'GB', 'TB']; $i = 0; while($bytes > 1024) { $bytes /= 1024; $i++; } return round($bytes, $precision) . ' ' . $units[$i]; } |
ものすごく単純なコード
あとフォーマット用に format_bytes も定義しました。
バイト数を KB とか MB の単位付きでフォーマットできる関数です。
そしてあるサーバーで上記を試した結果がコチラ
▼ このような結果に、、、
- 全体容量 : 99.95 GB
- 空き容量 : 94.31 GB
- 使用容量 : 5.64 GB
う~~~~ん・・・
なんか予想してたサイズと大分かけ離れてます。
管理画面だと1MBくらいしか利用してないのに
恐らくファイルシステム全体を合算してるからですね。
そのため、この方法は次の場合は使わないほうがいいかも
- システム全体で計算してほしくないとき
- 純粋に /www 以下の容量だけ調べたいとき
一般公開の /www だけのディスク使用量を調べるなら・・・
次で紹介する方法が、より正確な値を調べることができます。
2.duコマンドをPHPから実行して調べる方法
2つめはPHPから duコマンド を実行する方法
この duコマンド は次の目的で使えるコマンドです。
▼ duコマンドについての概要を拝借
duコマンドは、ファイルのディスク使用量を表示するコマンドです。
du [オプション] ディレクトリ・ファイル
引用元 : https://webkaru.net/linux/du-command/
ここで重要になってくるオプションは以下の通り
- -sオプション
指定したディレクトリのディスク使用量のみを表示
- -kオプション
ディスク(ディレクトリ)使用量をKB単位で表示する
- -mオプション
ディスク(ディレクトリ)使用量をMB単位で表示する
どうやらGB単位やTB単位で表示するオプションはない模様
でもこのコマンドならより正確な使用量が調べられます。
実際に あるサーバー で以下のコードを試してみました。
いわゆる ドキュメントルート 以下の使用量表示するコードです。
▼ 使用量を調べるコード例
1 2 3 4 5 6 7 8 |
/// ディスク使用量(bytes)を調べる $f = '/home/www'; $io = popen ( '/usr/bin/du -sk ' . $f, 'r' ); $size = fgets ( $io, 4096); $used_in_kb = substr($size, 0, strpos($size, "\t")); $used_in_mb = round($used_in_kb/1024, 3); echo '使用容量 : '.$used_in_mb.'MB'; pclose ( $io ); |
▼ このコードの表示例
1 |
使用容量 : 1.039MB |
うん、今度はサーバー管理画面とほぼ同じ値 になりました。
データ使用量を調べるなら、こっちの方がいいですね。
ちなみにMySQLのDBとかテーブルサイズの調べ方
最後に関連性がありそうなので紹介。
MySQLのDB・テーブルサイズを調べたいことってないですか?
その方法は次記事で紹介しました。
▼ DBサイズ、テーブルサイズ など確認する裏ワザ(?)
気になる方はコチラもご覧ください。
ここまでのまとめ
2つの方法のまとめ(箇条書き)
- 専用関数を使って調べる
全体容量は disk_total_space() 、空き容量は disk_free_space() で取得可能。全体-空きで使用容量を調べられるが、ディスク全体での使用量になることに要注意!
- duコマンドを使って調べる
PHP内でディスク使用量を表示できる du コマンドを実行。その結果から【●●MB】などの数字だけを抜き出せば、特定ディレクトリのみの計算が可能
ディスク全体を対象にするなら1番目のやり方
特定ディレクトリ(www以下など)なら2番目を使えば間違いないです。
以上、PHPからディスク使用量を調べる方法でした。ではまた