2017-08-14 5 views
1

私はR scriptsの束をいくつか計算し、結果を返します。私はPHPのWebサイトを構築し、ユーザーが実際にRスクリプトにデータが渡され、処理されたフォームを送信し、その結果をPHPに返してインターフェースを更新することを計画しています。PHPからRスクリプトを呼び出すには?

ユーザがフォームを送信するときに、データがデータベースに格納されるように、Rが読み込み、入力を処理してデータベースに結果を挿入してPHPが取得できるようにする予定です。ただし、2つの問題があります

  1. どのように私のRスクリプトは、それはそれらの値を取得し、処理を行うことができますので、特定の値をデータベースに格納されていることを知っていますか?
  2. 私のRスクリプトがデータの処理を終了してmysql dbに挿入すると、PHPが現時点でPHPにデータベースを問い合わせて値を取得する必要があることをPHPに理解させるにはどうすればよいですか?

のは、私のRスクリプトは次のようであるとしましょう:

range<-1:20 
m<-mean(range) 
s<-sum(range) 
print(m) 
print(s) 

あなたは、このケースでの入力範囲を定義するために120だろう見ることができ、かつ出力が値を示すことであるとして私のウェブページにはmsがあります。

これを達成する方法はありますか?感謝! ありがとう!

答えて

0

私はRの専門家だが、それが行われています: /poorman.php

echo " 
"; 
echo "Number values to generate: 
"; 
echo "Submit"; 
echo "" 
; 

if(isset($_GET['N'])) 
{ 
    $N = $_GET['N']; 

    // execute R script from shell 
    // this will save a plot at temp.png to the filesystem 
    exec("Rscript my_rscript.R $N"); 

    // return image tag 
    $nocache = rand(); 
    echo(""); 
} 
?> 

およびRスクリプト...

my_rscript.R

args <- commandArgs(TRUE) 

N <- args[1] 
x <- rnorm(N,0,1) 

png(filename="temp.png", width=500, height=500) 
hist(x, col="lightblue") 
dev.off() 

source

+0

基本的に、私はデータベースが全く必要ないと言っていますか? – Riad

+0

rスクリプトを直接実行することができます。 – catbadger

+0

ソースでは、一度に1人のユーザーしかこのWebアプリケーションを使用できないと言いました。Rスクリプトは入力を処理するために忙しいので、理解しています。 – Riad

1

shell_exec()またはexec()a PHPでの最良の選択肢と思われます。 This answer explains the difference.

echo shell_exec("Rscript my_script.R {$_GET['range']}"); 
+0

ここでmysqlデータベースを使う必要はありませんか? – Riad

+0

ページの読み込みを超えて入力を保持する必要がある場合は、入力をデータベースに格納します。各呼び出しで膨大な量のデータがあり、データベース間でデータを永続化する方法としてデータベースを使用している場合は、すばらしいことです(ただし、これは問題ではありません)。データが単にパススルーで簡潔なものであれば、データベースを使用する理由はありません。 – alttag

+0

あなたの返事ありがとうございます。これは役に立ちます – Riad

関連する問題