読者です 読者をやめる 読者になる 読者になる

PHPでメモリ使用量をグラフ表示するライブラリ作ってみた

f:id:y_d:20111021010716p:image
DmMemoryGraph というPHPのライブラリをつくりました。DmMemoryGraphは実行中のPHPアプリケーションのメモリ使用量をグラフ表示します。


黒の線が設定した計測地点のメモリ使用量(memory_get_usage)で、赤い線がピークメモリ(memory_get_peak_usage)で、グラフのX軸は経過時間、Y軸はメモリ使用量です。

使い方
  1. DmMemoryGraph.phpをrequireします。
  2. メモリを計測したい地点にDmMemoryGraph::watch();を書きます。引数を設定するとラベルを貼ることができ、グラフ上に緑色で印がつきます。
  3. メモリの計測が終了したらDmMemoryGraph::toDataSchemeURI(500,300);を呼んでimgタグのsrcに設定する値を取得します。引数の数値は出力される画像サイズですので変更したい場合はこの引数の値を変更します。
  4. 3で取得した値を<img src="<?=$schemeUri?>" />こんな感じでimgに設定します。
使用例
<?php
   require_once 'DmMemoryGraph.php';
   
   $array = array();
   DmMemoryGraph::watch(); //メモリ計測
   something1();
   DmMemoryGraph::watch('label1'); //メモリ計測
   something2();
   DmMemoryGraph::watch('label2'); //メモリ計測
   something3();
   DmMemoryGraph::watch(); //メモリ計測
   $schemeUri = DmMemoryGraph::toDataSchemeURI(500,300); //グラフ画像取得
?>
<img src="<?=$schemeUri?>" />
参考

赤い線と黒い線が離れている場合はメモリ計測地点の手前でメモリを消費する処理があり、メモリ計測地点に到達する前にメモリが開放されています。

注意点

※GDに依存しています。
※メモリ監視する処理にメモリを割くので、監視すればするほどメモリが溜まるという問題があるので時間があれば後で直します。