2011-06-28 18 views
1

PHPスクリプトでexecコマンドを使ってGnuplotを呼び出す方法を解明しようとしていました。私は、データベースからデータをつかみ、それらを読み取ることができるようにテキストファイルに記録された値を置くいくつかのphpファイルを書いたphpからGnuplotを呼び出していますか?

まず、私はいくつかのバックグラウンド・コンテキストをあげますgnuplotそこからグラフを作成するための適切なポインタを持つgnuplotスクリプトを生成する2番目のphpファイルがあります。

私は手動でc:/gnuplot/gnuplot/binary/gnuplot.exe graph.txtに行き、グラフを手動で生成することができますが、自動化する方法はわかりません。

LinuxとWindowsの両方の提案が役に立ちます。私はそれを書いていて、それをウィンドウでテストしていますが、いったんそれが修正されると、私たちのLinuxサーバーに行きます。

ありがとうございます!

+0

私はよく分かりませんが、このような場合にはLinux環境ですでに試してみる方が簡単かもしれません。 – phimuemue

答えて

1

Linuxマシンでgnuplotを実行するには、PHPのexec()関数を使用できます。私は正確に何を出力したいのか分かりませんが、execは間違いなくプログラムを実行できます。

+0

ディレクトリや何かに入れてしまえば、問題は発生しません。私はそれがどれくらい重い(言葉を許して) "linuxy" gnuplotであるかを考えていると思った。 – Joshua

2

これは非常に古いコード私はgnuplotと話をするためにPHPを手に入れたので、その時点で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; 
関連する問題