The update of rrd.so causes the return value of rrd_fetch to change, which is incompatible with the old version_PHP Tutorial

WBOY
Release: 2016-07-13 17:52:37
Original
1134 people have browsed it

I upgraded PHP’s rrd extension from the old version of rrdtool.so to the latest rrd.so two days ago


However, when using it, I found that the calling methods of many functions have changed, mainly because the configuration of count($opts) has been cancelled, such as rrd_create, rrd_fetch, rrd_update and other functions
Originally there were three parameters (string $filename, array $options, count($opts)), but now they are simplified to two parameters (string $filename, array $options)


But the troublesome thing is that the entire return value format of the rrd_fetch function has changed, making it completely different from the existing code.
In the new rrd.so, rrd_fetch return value:
[php]
array(4) {
["start"]=>
int(1341834300)
["end"]=>
int(1341834600)
["step"]=>
int(300)
["data"]=>
array(2) {
["ds0"]=>
array(1) {
[1341834600]=>
float(29875732.323333)
}  
["ds1"]=>
array(1) {
[1341834600]=>
float(139478395.26667)
}  
}
}

In the old rrdtool.so, rrd_fetch return value:
[php]
array(6) {
["start"]=>
int(1341834300)
["end"]=>
int(1341834600)
["step"]=>
int(300)
["ds_cnt"]=>
int(2)
["ds_namv"]=>
array(2) {
[0]=>
String(3) "ds0"
[1]=>
String(3) "ds1"
}
["data"]=>
array(2) {
[0]=>
float(1073.00666667)
[1]=>
float(32.9566666667)
}
}

[php]
[2011-03-02 04:26 UTC] koubel at seznam dot cz
thank you, rrd_fetch rewritten, there were a bug in filling the returned array. Nowadays all data sources are supported (trunk code). I made a litte bit BC break, no more ds_cnt, ds_namv keys in result array from fetch. I think these are completely useless.


The master thinks that the two parameters ds_cnt and ds_namv are completely useless, and also modified the return format of data


Well, the new rrd_fetch is indeed quite simple, and it also has data corresponding time, which is very convenient, but what about the transition stage? The original system cannot be changed instantly, but the background rrd has been upgraded, so we have no choice but to find a temporary solution first


[php]
#The return format of the old version of rrd_fetch is different from the new version. During the transition stage, you need to use the following function to change the return value of the new version of rrd_fetch to the format of the old version in order to be compatible with the old version of the code
function my_rrd_fetch($file_path, $opts , $count = 0) {
$ret = rrd_fetch($file_path, $opts);
If(!$ret)
        return false;


$start = $ret['start'];
$end = $ret['end'];
$step = $ret['step'];
$ds_cnt = 0;
$ds_namv = array();
$data = array();
$tmpdata = array();
foreach($ret['data'] as $key => $values) {
          $ds_namv[] = $key;
         $ds_cnt++;
foreach($values ​​as $time => $value) {
               $tmpdata[] = $value;                                                                                               www.2cto.com
}  


$count = count($tmpdata);
for($i = 0; $i < ($count/2); $i++){
         $data[] = $tmpdata[$i];
          $data[] = $tmpdata[$i + ($count/2)];
}  


return array('start' => $start, 'end' => $end, 'step' => $step, 'ds_cnt' => $ds_cnt, 'ds_namv' => $ds_namv, 'data ' => $data);
}

Replace the previous rrd_fetch with the above my_rrd_fetch. The function is to change the return value of the new version of rrd_fetch to the return value of the old version for temporary compatibility with the old version of the code...

Of course, you still have to slowly change them to new functions later...
Author: Liv2005

http://www.bkjia.com/PHPjc/478110.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/478110.htmlTechArticleI upgraded php’s rrd extension from the old version of rrdtool.so to the latest rrd.so two days ago, but using I found that the calling methods of many functions have changed, mainly because the configuration of count($opts) has been cancelled...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template