我有一个PHP脚本,为脚本R的每个参数发送3个值.
$typeOfData = 1;
$month = 2;
$year = 2014;
exec("Rscript C:/xampp/R-script/plot.R $typeOfData $month $year", $response);
var_dump($response);
Run Code Online (Sandbox Code Playgroud)
还有一个接收这些参数的R脚本.
library(rjson)
args <- commandArgs(TRUE)
tmp <- strsplit(args, " ")
typeOfData <- tmp[[1]][1]
month <- tmp[[2]][1]
year <- tmp[[3]][1]
output <- list(imgname="imgs/tmax.tiff")
cat(toJSON(output))
Run Code Online (Sandbox Code Playgroud)
当我运行php脚本时,变量$ response不显示R生成的json,它返回一个空集.有没有其他方法来集成R和PHP.
小智 6
有几个选项,但一个选项是使用RApache.按照http://rapache.net/manual.html中的说明安装RApache
在httpd.conf中设置Apache指令,这将确保/ var/www/brew下的所有文件都被解析为R脚本
<Directory /var/www/brew>
SetHandler r-script
RHandler brew::brew
</Directory>
Run Code Online (Sandbox Code Playgroud)
使用文件名plot.R的API创建R脚本,并将其放在/ var/www/brew文件夹下.此R脚本文件可以如下所示:
<%
library(rjson)
args <- GET
tmp <- lapply(args, FUN=function(x) strsplit(x, " "))
typeOfData <- tmp[[1]][1]
month <- tmp[[2]][1]
year <- tmp[[3]][1]
output <- list(imgname="imgs/tmax.tiff")
cat(toJSON(output))
%>
Run Code Online (Sandbox Code Playgroud)
标记 GET
现在,您可以通过调用PHP来调用您的API,就像调用任何其他Web服务一样http://localhost/brew/plot.R?typeOfData=1&month=2&year=2014.将localhost替换为您托管API的服务器的IP.
使用RApache时,每次获取GET, POST, COOKIES, FILES, SERVER传递给API调用的变量.因此,如果您想在呼叫中使用POST而不是GET示例,请继续.有关这些变量,请参阅http://rapache.net/manual.html中的文档.
这几乎与此处所示的答案相同:部署包含R功能的API的最简单方法是什么?
| 归档时间: |
|
| 查看次数: |
10833 次 |
| 最近记录: |