gpt4 book ai didi

perl - GD:建立DBI连接时,图形没有输出

转载 作者:行者123 更新时间:2023-12-03 18:15:18 24 4
gpt4 key购买 nike

我在小型服务器上工作,以提供包含与家庭自动化设置相关的数据的页面。我有一个充满传感器数据的数据库,如果我取消对底部的注释,则可以成功查询并输出到图形图像。当通过浏览器作为cgi脚本访问图形时,也可以用手动创建的out1和out2(在中间附近注释掉)替换sqlite代码来打印图形。问题在于尝试将所有内容放在一起并在浏览器中将绘制的sqlite数据作为cgi脚本查看。我已将问题缩小为连接代码。当我将其添加到其他可以正常工作的脚本中时,您不会得到图像输出;但我知道连接代码有效。它必须是显而易见的东西,但我只是找不到。有什么想法吗?

#!/usr/bin/perl -w
use CGI ':standard';
use DBI;
use GD::Graph::lines;
use strict;

my $dbh = DBI->connect(
"dbi:SQLite:dbname=/root/distancetest",
"",
"",
{ RaiseError => 1}
) or die $!;


my $sth = $dbh->prepare("SELECT * FROM distance");
$sth->execute();

my $row;
my @data;
my @out1;
my @out2;

while ($row = $sth->fetchrow_arrayref()) {
push(@out1, @$row[0]);
push(@out2, @$row[1]);
}
#@out1 = (1,2,3,4,5);
#@out2 = (1,2,3,4,5);

$data[0] = \@out1;
$data[1] = \@out2;

$sth->finish();
$dbh->disconnect();

my $skip = int ((@data * 8)/(600-50) + 1);

my $mygraph = GD::Graph::lines->new(600, 300);
$mygraph->set(
x_label => 'Timestamp',
y_label => 'cm',
title => 'Distance measuted at time',
line_types => [1],
line_width => 2,
x_labels_vertical => 1,
x_label_skip => $skip,
dclrs => ['blue'],
) or warn $mygraph->error;

$mygraph->set_legend_font(GD::gdMediumBoldFont);
$mygraph->set_legend('sensor1');
my $myimage = $mygraph->plot(\@data) or die $mygraph->error;

print "Content-type: image/png\n\n";
#open(OUTPUT, ">$0.png") or die "Can't open $0.png: $!\n";
#print OUTPUT $myimage->png();
print $myimage->png;

最佳答案

要查找代码出了什么问题,可以添加以下行:

use CGI::Carp qw(fatalsToBrowser);

关于perl - GD:建立DBI连接时,图形没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27465497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com