PHPで定期的にディスク使用率を監視する機会があったので、覚書として残しておく。
スポンサーリンク
ディスク全体のサイズを取得する
ディスクの容量を取得する場合は disk_total_space
関数を使用する。
引数にパスを渡し、そのパスがマウントされているディクスの容量をバイト単位で返す。
$total = disk_total_space("/"); //バイト単位でディスクの容量を取得
echo $total;
空き容量を取得する
空き容量を取得するには disk_free_space
関数を使用する。
この関数も、指定されたパスにマウントされているディクスの、空き容量をバイト単位で返す。
$free = disk_free_space("/");
echo $free;
ディスク使用率を計算する
disk_total_space
と disk_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"
0 件のコメント:
コメントを投稿