X-Git-Url: https://git-public.kairo.at/?p=php-utility-classes.git;a=blobdiff_plain;f=include%2Fclasses%2Frrdstat.php-class;h=15cca53b77b2b86af2e9668862e19b6a9eaef7a9;hp=470a131ceac6ca214d4f531948589b07196abfdb;hb=25b93a4dbffdb90f9dba75729b23176ab6fcdbe8;hpb=31df2e13256aaf55e28d49646faa06b5762d9a96 diff --git a/include/classes/rrdstat.php-class b/include/classes/rrdstat.php-class index 470a131..15cca53 100644 --- a/include/classes/rrdstat.php-class +++ b/include/classes/rrdstat.php-class @@ -23,7 +23,7 @@ class rrdstat { if (!is_null($this->rrd_file)) { if (!is_writeable($this->rrd_file)) { if (!file_exists($this->rrd_file)) { - if (touch($this->rrd_file)) { $this->create(); } + if (@touch($this->rrd_file)) { $this->create(); } else { trigger_error('RRD file can not be created', E_USER_WARNING); } } else { @@ -138,9 +138,10 @@ class rrdstat { } } } - $output = array(); $return_var = null; - exec($create_cmd, $output, $return_var); - if ($return_var) { trigger_error('rrd create returned with value '.$return_var, E_USER_WARNING); } + $return = `$create_cmd 2>&1`; + if (strpos($return, 'ERROR') !== false) { + trigger_error($this->rrd_file.' - rrd create error: '.$return, E_USER_WARNING); + } else { $this->status = 'ok'; } } @@ -153,9 +154,12 @@ class rrdstat { if (!is_null($evalcode)) { ob_start(); eval($evalcode); - $upvals = explode("\n", ob_get_contents()); + $ret = ob_get_contents(); + if (strlen($ret)) { $upvals = explode("\n", $ret); } ob_end_clean(); } + $walkfunc = create_function('&$val,$key', '$val = is_numeric($val)?$val:"U";'); + array_walk($upvals, $walkfunc); } else { foreach ($this->rrd_fields as $ds) { @@ -192,10 +196,17 @@ class rrdstat { $upvals[] = is_null($val)?'U':$val; } } - $update_cmd = 'rrdtool update '.$this->rrd_file.' N:'.implode(':', $upvals); - $output = array(); $return_var = null; - exec($update_cmd, $output, $return_var); - if ($return_var) { trigger_error('rrd update returned with value '.$return_var, E_USER_WARNING); } + $return = null; + if (count($upvals)) { + $update_cmd = 'rrdtool update '.$this->rrd_file.' N:'.implode(':', $upvals); + $return = `$update_cmd 2>&1`; + } + + if (strpos($return, 'ERROR') !== false) { + trigger_error($this->rrd_file.' - rrd update error: '.$return, E_USER_WARNING); + $success = false; + } + else { $success = true; } return ($return_var == 0); } @@ -216,7 +227,7 @@ class rrdstat { $return = `$fetch_cmd 2>&1`; if (strpos($return, 'ERROR') !== false) { - trigger_error('rrd fetch error: '.$return, E_USER_WARNING); + trigger_error($this->rrd_file.' - rrd fetch error: '.$return, E_USER_WARNING); $fresult = false; } else { @@ -457,7 +468,7 @@ class rrdstat { $return = `$graph_cmd 2>&1`; if (strpos($return, 'ERROR') !== false) { - trigger_error('rrd graph error: '.$return, E_USER_WARNING); + trigger_error($this->rrd_file.' - rrd graph error: '.$return, E_USER_WARNING); $return = $graph_cmd."\n\n".$return; } $return = 'file:'.$fname."\n".$return; @@ -500,7 +511,7 @@ class rrdstat { $out .= '

'.$ptitle.'

'; if (!isset($pconf['show_update']) || $pconf['show_update']) { - $out .= '

Last Update: '.date('Y-m-d H:i:s', $this->last_update()).'

'; + $out .= '

Last Update: '.(is_null($this->last_update())?'unknown':date('Y-m-d H:i:s', $this->last_update())).'

'; } if (in_array($this->status, array('ok','readonly'))) {