PHPでディスク(ストレージ)使用量を取得する

2023年2月7日火曜日

PHP

t f B! P L

enter image description here

PHPで定期的にディスク使用率を監視する機会があったので、覚書として残しておく。

スポンサーリンク

ディスク全体のサイズを取得する

ディスクの容量を取得する場合は disk_total_space 関数を使用する。
引数にパスを渡し、そのパスがマウントされているディクスの容量をバイト単位で返す。

$total = disk_total_space("/");   //バイト単位でディスクの容量を取得
echo $total;

空き容量を取得する

空き容量を取得するには disk_free_space 関数を使用する。
この関数も、指定されたパスにマウントされているディクスの、空き容量をバイト単位で返す。

$free = disk_free_space("/");
echo $free;

ディスク使用率を計算する

disk_total_spacedisk_free_space 関数を使ってディスク使用率を計算できる。

ディスク使用率(%)は「(1 ー 空き容量 ÷ 総容量) × 100」で求められるので、次のようなコードを書く事でディスク使用率が計算できる。

$path = "/";
//総容量
$total = disk_total_space($path);
//空き容量
$free = disk_free_space($path);
//ディスク使用率を計算
$diskUsage = (1 - $free / $total) * 100;
echo "ディスク使用率 $diskUsage %";

スポンサーリンク

容量に合わせてkB,MB,GBに換算する

disk_total_space および disk_free_space関数は、容量をバイト単位で返すため、容量が GB単位以上の昨今のストレージだと桁数が大きすぎて見づらい。

そのため、次のようにして容量に合わせて kB,MB,GB関数で表示するのがよいであろう。

//容量の単位
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');

//空き容量をバイト単位で取得
$free = disk_free_space($path);

//1024の対数を求めて、どの容量の単位で表示するか計算
$class = (int)log($free, 1024);

//容量に合わせた単位で表示
sprintf("%1.1f %s", $free / pow(1024, $class), $units[$class]);   // "ex) 36.7 GB"
スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ