繁体   English   中英

推荐的PHP RRD日期输入

[英]PHP RRD Date input as commend

我一直在尝试通过PHP生成RRD图。 到目前为止,除了我要具有最后更新日期/时间的最后一行之外,它都可以正常工作。 我一直在网上搜索,但是找不到与我的问题相关的信息。 我发现以Bash RRDTool GPRINT格式编写的脚本与printf接近我想要生成的脚本,但是该解决方案无法应用于我的问题。 下面提供了我在PHP中产生日期的代码示例:

date_default_timezone_set('Europe/Stockholm');
$timezone = new DateTime(NULL, new DateTimeZone('Europe/Stockholm'));
$date = date('l jS \of F Y h:i:s A' , $timezone->format('U'));

echo的输出为:

Monday 5th of May 2014 12:40:14 PM

在图的末尾,我尝试将其作为对图的注释(代码示例)导入:

"COMMENT: RRD last updated: ".$date."\\n",

我得到的错误:

<b>Graph error: </b>I don't understand ': Monday 5th of May 2014 12:43:17 PM\n'
in command: 'COMMENT: RRD last updated: Monday 5th of May 2014 12:43:17 PM\n'.

我在字符:上应用\\ (反斜杠)的位置,并且错误按预期的时间转移:

<b>Graph error: </b>I don't understand ':45:31 PM\n' in command: 'COMMENT: RRD
last updated\: Monday 5th of May 2014 12:45:31 PM\n'.

我试图对日期语法应用相同的解决方案:

$date = date('l jS \of F Y h\:i\:s A' , $timezone->format('U'));

但是输出错误仍然相同:

<b>Graph error: </b>I don't understand ':47:48 PM\n' in command: 'COMMENT: RRD
last updated\: Monday 5th of May 2014 12:47:48 PM\n'.

我还尝试将日期语法导入COMMENT

"COMMENT: Graph last updated\: date('l jS \of F Y h\:i\:s A' ,
$timezone->format('U'))\\n"

我得到的错误:

PHP Notice:  Undefined property: DateTime::$format

在这一点上,我用尽了所有想法和可能的解决方案。 我想知道其他人是否有类似的问题,或者是否有解决此问题的想法。 我在Perl中创建了一个代码示例,做同样的事情,默认情况下,Perl在底部显示日期。 所以应该去做。

在此先感谢您的时间和精力,以协助我解决我的问题。

必须对COMMENT指令中的所有冒号进行转义,否则,如您所经历的,您将收到一个错误。

因此,如果您想发表评论,则需要将其全部转义。 调用str_replace可以处理:

$date = date('l jS \of F Y h:i:s A' , $timezone->format('U'));
$comment = "RRD last updated: ".$date;
$comment = str_replace( ":", "\\:", $comment );
$result = rrd_graph($rrdfile,  array(
.... things go in here ....
  "COMMENT:".$comment."\\n";
));

当然,您始终可以在date命令中执行此操作,记住您需要对转义符进行转义,尽管在这种情况下,您需要确保不存在其他冒号:

$date = date('l jS \of F Y h\\:i\\:s A' , $timezone->format('U'));
$comment = "RRD last updated \\:".$date."\\n";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM