PHPでディスク状況を調べる(dfコマンド)
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2007-12-11
今回は、PHP でサーバのディスク状況を取得してみます。サーバ上ではコンソールから df コマンドで標準出力されますが、PHP でも同じ要領で取得することが可能です。PHP には df の関数は用意されていないので、exec コマンドでdf コマンドを呼び出して結果を取得します。
// DISK INFO
exec ('df -h', $result, $status);
df -h : ディスク状況を表示(容量に適したサイズで出力)
$result : コマンドの結果が入る配列
$status : コマンドの結果(0:成功)
後は、配列に入った結果を整形すれば、HTML の表形式などで、きれいに見せることが可能です。参考までに、HTML の表への整形でハマったことをまとめておきます。$result には標準出力される内容が 1 行ずつ入ります。よって、$result[0] は下記のような内容です。
Filesystem Size Used Avail Use% Mounted on
これを整形するには、スペースで区切るのが手頃ですので、1 行ずつ取り出し、split 関数でさらに分解します。
foreach ($result as $key => $value) {
$view = split(" ", $value);
}
しかし、半角スペースの数は状況によって違うので、これではうまくいきません。まずは、連続するスペースを 1 つのスペースにします。また、「Mounted on」は 1 つの項目名なので、このスペースを取り除きます。
(もしくは、スペース以外の文字で連結する)
foreach ($result as $key => $value) {
// 前後に空白のある「Mounted on」と一致(\b[文字列]\b)
$value = preg_replace("/\bMounted on\b/i", "MountedOn", $value);
// 連続するスペースに一致
$value = preg_replace("/\s+/", " ", $value);
$view = split(" ", $value);
}
あとは、$view をうまく利用して整形すれば完成です。
関連記事
上記の記事に関連する記事(最新の10件)です。


