クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
PHP

PHPでディスク状況を調べる(dfコマンド)

今回は、PHP でサーバのディスク状況を取得してみます。

サーバ上ではコンソールから df コマンドで標準出力されますが、PHP でも同じ要領で取得することが可能です。

では、早速 PHP で試してみましょう。

ディスクの状況確認

PHP には df の関数は用意されていないので、exec コマンドでdf コマンドを呼び出して結果を取得します。

// DISK INFO
exec ('df -h', $result, $status);

df -h   : ディスク状況を表示(容量に適したサイズで出力)
$result : コマンドの結果が入る配列
$status : コマンドの結果(0:成功)

後は配列に入った結果を整形すれば、HTML の表形式などできれいに見せることが可能です。

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 をうまく利用して整形すれば完成です。

Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/09/20 11:58:13時点 Amazon調べ-詳細)

あなたにオススメ