如何从PHP调用R脚本?

时间:2017-08-14 18:05:17

标签: php mysql r

我有一堆R scripts进行一些计算并返回结果。我打算构建一个PHP网站,用户可以实际提交一个表单,将数据传递给我的R脚本,处理完毕,然后将结果返回给PHP并更新界面。

计划是拥有一个数据库,因此当用户提交表单时,数据将存储在数据库中,以便R可以读取,处理输入,然后将结果插入数据库,以便PHP可以抓取它。但是,有两个问题:

  1. 我的R脚本如何知道某些值已存储在数据库中,以便它可以获取这些值并进行处理?
  2. 当我的R脚本完成处理数据并将其插入mysql数据库时,如何让PHP了解到目前PHP需要查询数据库并获取值?
  3. 让我们说我的R脚本如下:

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

    正如您所看到的,在这种情况下,输入将120来定义范围,输出将显示ms的值在我的网页上。

    知道如何实现这一目标吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

shell_exec()exec()可能是您在PHP中的最佳选择。 This answer explains the difference.

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

答案 1 :(得分:1)

我不是专家,但已经完成了: / 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