从php调用gnuplot生成图形的系统调用?

4

我正在使用一个PHP程序来读取文件,进行一些更改,然后将其写入新文件。之后,我使用系统调用调用gnuplot:

system('cat sarx.conf | /usr/bin/gnuplot');

sarx.conf包含生成图表的gnuplot命令。问题是,如果我在Linux服务器上从命令行运行php,则会生成图像并将其存储在磁盘上。但是当我通过浏览器运行php时,它会生成图像并尝试在浏览器上输出而不实际存储在磁盘上。

我尝试过以下方法:

  1. 我认为可能存在权限设置问题,但没有帮助。

  2. 我还在sarx.conf中硬编码了想要图像的路径。但这也没有帮助。

  3. 我还尝试在tmp目录中查找它,但没有成功!

有人有任何想法吗?我需要将此图像存储在磁盘上,以便我的网站稍后可以获取它来显示图表。是否有任何可以抓取图像并将其写入磁盘的php工具?


好的,我已经解决了,如果有人在将来需要帮助,这是我使用的代码:exec('cat sarx.conf | /usr/bin/gnuplot');并确保文件夹可写。很棒的一点是它会覆盖文件,因此如果您正在网页上绘制每秒钟或更频繁地接收新数据之类的内容,您可以让 PHP 指向一个明确的路径并获取图像。我正在制作热力图!! - trailblazer
1个回答

1
这里有一个很好的LGPL许可的PHP接口,可以与gnuplot配合使用:http://www.liuyi1.com/PHP-GNUPlot/ 以下是类似的操作方法:
$my_file = tempnam();
$handle = popen('gnuplot', 'w');
fwrite($this->ph, "Run some gnuplot commands here\n");
fwrite($this->ph, "set term png\n");
fwrite($this->ph, "set output ".$my_file."\n");
fwrite($this->ph, "replot\n");
flush($handle);
pclose($handle);
header('Content-Length: '.filesize($my_file));
header('Content-Type: image/png');
print file_get_contents($my_file);
unlink($my_file);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接