2014-02-26 152 views
1

我有一個R程序可以使用「R CMD BATCH file.r」和「Rscript file.r」從命令行正確執行。如果我嘗試通過PHP代碼執行,我會得到奇怪的結果。這裏是我的結果:如何從PHP代碼執行R程序?

$lastline = system("R CMD BATCH file.r", $returnval); 

** $ returnval = 133,R代碼創建一個潰敗的輸出文件,R代碼似乎並沒有被完全執行,因爲有應已創建SQL記錄

$lastline = system("Rscript file.r", $returnval); 

**沒有什麼是以往任何時候都回來了,瀏覽器只是旋轉無限期

我一直在使用exec_shell和exec也試過。我得到相同的結果。有關如何通過PHP有效執行R代碼的想法?從我讀過的內容來看,「R CMD BATCH」選項可能更有前途,但是,R/RMySQL所完成的工作似乎並沒有完成。不知道這是問題還是別的。但我知道R程序可以通過命令行正常執行。

此外,我寧願不必使用任何Apache或PHP模塊來實現這一點。感謝您的輸入。

+1

可能是一個權限問題 – 2014-02-26 23:07:27

+1

使用'須藤-u your_apache_user [R CMD批file.r',看看PHP與所需的權限運行按預期運行腳本。 – Sammitch

+0

@Sammitch,你的建議工作。謝謝! – Josh

回答

0

我會推薦使用Rserve來運行R代碼。 Rserve是一個在後臺運行的TCP/IP服務器。有一個模塊(rserve-php),但您可以重新創建功能。

您也可以使用插座與make.socket()功能,它是內部R.