【问题标题】:Using R with Apache & PHP [closed]将 R 与 Apache 和 PHP 一起使用 [关闭]
【发布时间】:2010-01-12 05:23:52
【问题描述】:

是否可以通过 Apache 和 PHP 运行 R 脚本?我希望能够将变量从 PHP 传递到 R。

有人做过这样的事吗?

基本上,我想知道是否有一种方法可以在 apache 服务器上将变量从 PHP 传递到 R。

【问题讨论】:

    标签: php apache r


    【解决方案1】:

    R-FAQ

    两个项目使用 PHP 为 R 提供 Web 界面。R_PHP_Online 由 Steve Chen (虽然不清楚这个项目是否仍然活跃)有点类似于上面的 Rcgi 和 Rweb。 R-php 由 Alfredo Pontillo 和 Angelo Mineo 积极开发,提供 R 的 Web 界面和一组无需输入 R 代码的预先指定的分析。

    还有这篇论文:Using R via PHP for Teaching Purposes: R-php

    【讨论】:

    • 这个项目提供了完整的 R 功能,这不是我想要的。我正在寻找可以促进将变量从 PHP 传递到 R 并将 R 输出返回到 Apache 服务器上的 PHP 的东西。
    【解决方案2】:

    我们个人使用 R CMD BATCH 接口来实现这一点。这不是很优雅,但本质上我们有一个用户将数据粘贴到一个表单中,该表单传递给 PhP,它会生成一个包含某些内容的 .R 文件

    x = c(1,2,3,4); dev.off(); 情节(x);

    然后我们让 PhP 执行 exec "R CMD BATCH"

    然后您应该在该目录中获得可以提供给客户端的 Rplots.ps 文件。同样,您可以使用 jpeg() 函数返回图形的 jpeg 图片,然后可以显示在 PhP 返回的网页上。

    一点也不优雅,但它对我们有用。

    【讨论】:

    • 感谢危险统计的回答。这不是最好的解决方案,但因此选择了它。在另一个论坛中,我发现了两个更适合我的选择。
    【解决方案3】:

    Rserve 现在支持 php,您可以在以下位置找到更多信息:http://code.google.com/p/rserve-php/

    【讨论】:

    • 这是对马克的评论的补充
    【解决方案4】:

    其他地方的答案:

    1. RApache 似乎是相关的:http://biostat.mc.vanderbilt.edu/rapache/。它以 Apache 模块的形式将 R 与 Web 服务集成在一起。它以 VMWare 映像的形式提供,因此您可以顺利测试它。 Jeroen Ooms 基于 RApache 开发了一些令人惊叹的 Web 应用程序:http://www.stat.ucla.edu/~jeroen/

    2. 集成 PHP、Apache 和 R 的另一种解决方案可能是使用 R Web 服务解决方案之一,例如 statconnWS 或 rsoap。这样做的好处是以后可以简单地将 Web 服务器和运行 R 的计算机分开。计算开销不应该太大。

    【讨论】:

    【解决方案5】:

    这是一个可能有帮助的 PHP 库:

    https://github.com/kachkaev/php-r

    use Kachkaev\PHPR\RCore;
    use Kachkaev\PHPR\Engine\CommandLineREngine;
    
    $r = new RCore(new CommandLineREngine('/usr/bin/R'));
    $result = $r->run('1 + 1');
    echo $result;
    

    这将输出:

    > 1 + 1
    [1] 2
    

    该库也可通过Symfony2 bundle 获得。

    【讨论】:

      【解决方案6】:

      另一个选项是Rserve。它允许您从任何支持 TCP 套接字的语言调用 R。

      【讨论】:

      • 不完全——您还需要一个使用 Rserve 协议的客户端。 Simon 为我们提供了 Java 和 C++ 客户端,AFAIK 对 PHP 来说一无所有。也就是说,Rserve 非常有用,但被低估了。
      • 这是问题的一部分——我不懂 Java。否则,这很可能是我的解决方案。
      【解决方案7】:

      是的,R in mediawiki 很好地实现了这一点,而且它是开源的,因此您可以看到他们是如何做到的。

      我自己玩过大量的源代码,它真的很简单,你应该不会花很长时间去适应它。

      当然,除非您计划在您的服务器上使用mediawiki,否则您不能按原样使用它。另外,请注意安全。

      【讨论】:

      • 这绝对看起来很有趣......我似乎无法让它在我有权访问的任何服务器上工作:(
      【解决方案8】:

      一个非常简单的方法

      你可以通过参数传递变量

      每次 exec("Rscript yourRscript.R") 传递参数时

      例如

      exec("Rscript yourRscript.R arg1 arg2 arg3")

      然后 yourRscript 可以使用 args 加载这些 agrus

      希望对你有帮助~

      【讨论】:

        猜你喜欢
        • 2018-07-12
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 2012-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多