[英]Realtime image from rrd file in PHP
我想从PHP脚本中的rrd文件生成“实时”图像,但没有成功。 这是php脚本(/var/www/rrd_image.php),应生成图片:
<?php
header("Content-type: image/png");
$options = array(
"--start", "-1d",
"--title=xxx",
"--lower-limit=0",
"--width=450",
"--height=120",
"DEF:snr=/var/www/rrd/cm_100.rrd:snr:LAST",
"CDEF:tsnr=snr,10,/",
"LINE:tsnr#00FF00:US SNR",
"GPRINT:tsnr:MIN:Min\: %3.1lf dB",
"GPRINT:tsnr:MAX:Max\: %3.1lf dB",
"GPRINT:tsnr:LAST:Pill\: %3.1lf dB",
);
rrd_graph("-", $options);
?>
所以我这样称呼它:
<img src="rrd_image.php" />
但是图片没有完成,在我看到的浏览器中,它是0字节,并且apache日志中没有错误。 (当我从控制台运行rrd_image.php时,它工作,“图像”进入标准输出。)
你做错了,因为rrd_graph()
返回array
而不是图像。 你应该改变它看它,就像这样:
$fileName = "rrd.png";
rrd_graph($fileName, $options);
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
$fp = fopen($name, 'rb');
if( $fp ) {
fpassthru($fp);
fclose($fp);
}
exit();
请务必先阅读文档: http : //php.net/manual/en/function.rrd-graph.php
PS:除非你知道你需要它,否则永远不要使用?>
- 它可以避免你意外地将某些东西输回到浏览器(比如空格或LF
之后的?>
)
在RRDGraph类中存在使用' - '作为文件名的可能性:
<?php
$options = array(
"--start", "-1d",
"--title=xxx",
"--lower-limit=0",
"--width=450",
"--height=120",
"DEF:snr=/var/www/rrd/cm_100.rrd:snr:LAST",
"CDEF:tsnr=snr,10,/",
"LINE:tsnr#00FF00:US SNR",
"GPRINT:tsnr:MIN:Min\: %3.1lf dB",
"GPRINT:tsnr:MAX:Max\: %3.1lf dB",
"GPRINT:tsnr:LAST:Pill\: %3.1lf dB",
);
$graphObj = new RRDGraph('-');
$graphObj->setOptions($options);
$res = $graphObj->saveVerbose();
header("Content-type: image/png");
echo $res['image'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.