PHPでディスク使用量を調べる現実的な2つの方法&コード例

PHPで次のようなものを調べたいとき、、、

  • ディスク使用量、
  • ディスク空き容量
  • 全体のディスク容量

PHPから直接【✕✕GB】とか調べることは可能です。

ですが・・・調べ方によって結果が全く違うので要注意!

そういう注意点とかも含め、
ここでは PHPでディスク使用量など調べる方法&コード例 まとめました。

主に 使用量 を調べる方法になります。

1.disk_total_space, disk_free_space で計算する方法

1つめは専用関数を使った計算方法

次の2つの関数を使ったやり方です。

  • disk_total_space
    => ディスクの全体サイズを返す
  •  disk_free_space
    => ディスク上で利用可能な領域を返す

使用容量は 全体 ー 空き で計算可能、という感じ

 

実際に書いてみたコードですが、次の通りになります。

▼ ディスク使用量・空き容量を調べてみた

ものすごく単純なコード

あとフォーマット用に 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単位で表示するオプションはない模様

でもこのコマンドならより正確な使用量が調べられます。

 

実際に あるサーバー で以下のコードを試してみました。

いわゆる ドキュメントルート 以下の使用量表示するコードです。

▼ 使用量を調べるコード例

▼ このコードの表示例

うん、今度はサーバー管理画面とほぼ同じ値 になりました。

データ使用量を調べるなら、こっちの方がいいですね。

ちなみにMySQLのDBとかテーブルサイズの調べ方

最後に関連性がありそうなので紹介。

MySQLのDB・テーブルサイズを調べたいことってないですか?

その方法は次記事で紹介しました。

▼ DBサイズ、テーブルサイズ など確認する裏ワザ(?)

気になる方はコチラもご覧ください。

ここまでのまとめ

2つの方法のまとめ(箇条書き)

  • 専用関数を使って調べる
    全体容量は disk_total_space()  、空き容量は  disk_free_space()  で取得可能。全体-空きで使用容量を調べられるが、ディスク全体での使用量になることに要注意!
  • duコマンドを使って調べる
    PHP内でディスク使用量を表示できる du コマンドを実行。その結果から【●●MB】などの数字だけを抜き出せば、特定ディレクトリのみの計算が可能

ディスク全体を対象にするなら1番目のやり方

特定ディレクトリ(www以下など)なら2番目を使えば間違いないです。

以上、PHPからディスク使用量を調べる方法でした。ではまた

PHP

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください