手边的程式希望能让使用者在网页上输入参数,
然后利用R来绘出统计图表和做一些统计运算
再把结果传回到PHP来呈现
目前已经测试过:
1. PHP把参数传给R,并让R根据这个参数来绘图,再由PHP显示 <- ok
2. R 连接数据库,取出资料绘图 <- ok
PHP 连结数据库,取出资料做成表格 <- ok
但是PHP呼叫R,由R根据参数到数据库取资料绘图之后就没下文了
程式撷取如下
PHP部分
<?php
// student_enroll.php
echo "<form action='student_enroll.php' method='get'>";
echo "近<input type='text' value='3' name='N' />来的学生入学人数分析";
echo "<br><input type='submit' />";
echo "</form>";
if(isset($_GET['N']))
{
$N = $_GET['N'];
// execute R script from shell
// this will save a plot at temp.png to the filesystem
$str = '"C:\Program Files\R\R-3.2.3\bin\Rscript"' . ' .\student_enroll.R' .
" $N";
$data = shell_exec($str);
echo $data;
// return image tag
$nocache = rand();
echo("<img src='temp.png?$nocache' />");
}
?>
R的部分
library(RODBC)
library(MASS)
library(ggplot2)
library(tidyr)
#从PHP取得参数
args <- commandArgs(TRUE)
set.year <- strtoi(args[1])
print(set.year)
#取得现在是哪一年并转换成中国年
this.year <- strtoi(substring(Sys.time(), 0, 4)) - 1911
#设定数据库连结
print(5)
odbcChannel <- odbcDriverConnect(connection="Driver={SQL
Server};server=127.0.0.1\\servername;database=database_name;
trusted_connection=yes;uid=uid;pwd=pwd")
print(6)
query.result <- sqlFetch(odbcChannel, "table_name")
print(7)
print(query.result)
odbcClose(odbcChannel)
红字以下都没有顺利执行完
现在有质疑是否PHP等待R存取数据库的时间太久了
因为不知道怎么让PHP显示错误讯息
只能用这种土法炼钢法得知程式执行到哪一行之后没有继续
盼望有人可以解惑阿,不然已经卡在这个步骤一个多星期了
感谢