从php调用Gnuplot?

时间:2011-06-28 16:58:44

标签: php exec gnuplot

我试图找出如何在我的php脚本中使用exec命令来调用Gnuplot。

首先,我将给出一些背景知识:

我写了几个php文件,它们从数据库中获取数据并将记录的值放入文本文件中,以便gnuplot可以读取它们。从那里我有第二个php文件生成一个gnuplot脚本,它有适当的指针来创建图形。

我可以手动转到c:/gnuplot/gnuplot/binary/gnuplot.exe graph.txt并手动生成图表,但我无法弄清楚如何自动化它。

Linux和Windows建议都会有所帮助!我正在编写它并在Windows上测试它,但一旦修复它就会进入我们的Linux服务器。

谢谢!

2 个答案:

答案 0 :(得分:2)

这是我写的一些非常旧代码让PHP与gnuplot交谈,所以很久以前它甚至不支持PNG输出,因此使用netpbm。这尚未在Windows上进行测试:

// Assuming data has been written to $data_file...

$image_file = tempnam("/tmp","gnuplotout");
$gplot_start = date("y/m/d", $start_date);
$gplot_finish = date("y/m/d", $finish_date);
$gnuplot_cmds = <<< GNUPLOTCMDS
set term pbm color small
set output "$image_file"
set size 1, 1
set title "Title"
set xlabel "Date"
set ylabel "EUR"
set xdata time
set timefmt "%y/%m/%d"
set xrange ["$gplot_start":"$gplot_finish"]
set format x "%d/%m"
set nokey
plot "$data_file" using 1:2 with lines
GNUPLOTCMDS;
$gnuplot_cmds .= "\n";

// Start gnuplot
if(!($pgp = popen("/usr/bin/gnuplot", "w"))){
    # TODO Handle error
    exit;
}
fputs($pgp, $gnuplot_cmds);
pclose($pgp);
header("Content-Type: image/png");
passthru("/usr/bin/pnmtopng $image_file");

// Clean up and exit
unlink($data_file);
unlink($image_file);
exit;

答案 1 :(得分:1)

要在Linux机器上执行gnuplot,您可以在php中使用exec()函数。我不确定你想要对输出做什么,但是exec绝对可以运行程序。