Initial Commit of AgileBill Open Source
This commit is contained in:
134
modules/voip/memory_report.inc.php
Normal file
134
modules/voip/memory_report.inc.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* AgileBill - Open Billing Software
|
||||
*
|
||||
* This body of work is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the Open AgileBill License
|
||||
* License as published at http://www.agileco.com/agilebill/license1-4.txt
|
||||
*
|
||||
* For questions, help, comments, discussion, etc., please join the
|
||||
* Agileco community forums at http://forum.agileco.com/
|
||||
*
|
||||
* @link http://www.agileco.com/
|
||||
* @copyright 2004-2008 Agileco, LLC.
|
||||
* @license http://www.agileco.com/agilebill/license1-4.txt
|
||||
* @author Tony Landis <tony@agileco.com> and Thralling Penguin, LLC <http://www.thrallingpenguin.com>
|
||||
* @package AgileBill
|
||||
* @version 1.4.93
|
||||
*/
|
||||
|
||||
header("Pragma: no-cache" );
|
||||
header("Cache-Control: no-cache, must-revalidate" );
|
||||
|
||||
if (!file_exists("/usr/bin/munge_monitor") || !file_exists("/var/log/asteriskmem")) {
|
||||
echo '<center>Sorry, the required scripts for processing memory reports are not installed.</center>';
|
||||
exit;
|
||||
}
|
||||
if (GD == false) {
|
||||
echo '<center>Sorry, this report requires GD support inside of PHP';
|
||||
exit;
|
||||
}
|
||||
|
||||
ob_start();
|
||||
require_once ('../../config.inc.php');
|
||||
require_once (PATH_INCLUDES."jpgraph/jpgraph.php");
|
||||
require_once (PATH_INCLUDES."jpgraph/jpgraph_line.php");
|
||||
|
||||
|
||||
$keys = array();
|
||||
function get_index($v) {
|
||||
global $keys;
|
||||
|
||||
if (in_array($v,$keys)) {
|
||||
return array_search($v,$keys);
|
||||
}
|
||||
$keys[] = $v;
|
||||
return array_search($v,$keys);
|
||||
}
|
||||
|
||||
function get_index_name($v) {
|
||||
global $keys;
|
||||
return $keys[$v];
|
||||
}
|
||||
|
||||
$fp = popen("/usr/bin/munge_monitor </var/log/asteriskmem","r");
|
||||
$data = "";
|
||||
while(!feof($fp))
|
||||
$data .= fread($fp,65536);
|
||||
fclose($fp);
|
||||
$lines = explode("\n",$data); $prev = ""; $i=-1; $j=0;
|
||||
foreach ($lines as $line) {
|
||||
$col = explode("|",$line);
|
||||
if($col[2]>10) {
|
||||
#echo "<pre>"; print_r($col); echo "</pre>";
|
||||
if ($prev != $col[0]) {
|
||||
$prev = $col[0];
|
||||
$i++;
|
||||
$j=0;
|
||||
for($t=0;$t<40;$t++)
|
||||
$datay[$i][$t] = 0;
|
||||
}
|
||||
$datay[get_index($col[3])][$i] = $col[2];
|
||||
$datax[$i] = date("H:j",$col[0]);
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
#echo "<pre>"; print_r($datay); echo "</pre>"; exit;
|
||||
$graph = new Graph(800,768,"auto");
|
||||
$graph->SetShadow();
|
||||
$graph->SetBackgroundGradient('#8e8e8e','#e1e1e1');
|
||||
// Use an integer X-scale
|
||||
$graph->SetScale("textlin");
|
||||
|
||||
// Set title and subtitle
|
||||
$graph->title->Set("Memory Leaks");
|
||||
$graph->subtitle->Set("Shows the number of unfreed blocks requested by each module");
|
||||
|
||||
// Use built in font
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Make the margin around the plot a little bit bigger
|
||||
// then default
|
||||
$graph->img->SetMargin(40,140,40,80);
|
||||
|
||||
// Slightly adjust the legend from it's default position in the
|
||||
// top right corner to middle right side
|
||||
$graph->legend->Pos(0.05,0.5,"right","center");
|
||||
|
||||
// Display every 10:th datalabel
|
||||
$graph->xaxis->SetTextTickInterval(6);
|
||||
$graph->xaxis->SetTextLabelInterval(6);
|
||||
$graph->xaxis->SetTickLabels($datax);
|
||||
$graph->xaxis->SetLabelAngle(90);
|
||||
|
||||
$rgb = new RGB();
|
||||
$i = 0;
|
||||
foreach($datay as $dy) {
|
||||
// Create a red line plot
|
||||
$p[$i] = new LinePlot($dy);
|
||||
reset($rgb->rgb_table);
|
||||
for($j=0;$j<=$i;$j += 1) {
|
||||
for($k=0;$k<=10;$k++) {
|
||||
next($rgb->rgb_table);
|
||||
}
|
||||
if( current($rgb->rgb_table) == "" ) {
|
||||
reset($rgb->rgb_table);
|
||||
}
|
||||
}
|
||||
$p[$i]->SetColor(current($rgb->rgb_table));
|
||||
$p[$i]->SetLegend(get_index_name($i));
|
||||
|
||||
// The order the plots are added determines who's ontop
|
||||
$graph->Add($p[$i]);
|
||||
// $graph->Add($b1);
|
||||
#$i++;
|
||||
#echo "<pre>"; print_r($dy); echo "</pre>";
|
||||
$i++;
|
||||
}
|
||||
|
||||
// Finally output the image
|
||||
$graph->Stroke();
|
||||
ob_end_flush();
|
||||
exit;
|
||||
?>
|
Reference in New Issue
Block a user