recherche
Maisondéveloppement back-endtutoriel phpPHP中如何调用RScript脚本(附代码)

这篇文章主要介绍了PHP中如何调用RScript脚本,有一定的参考价值,感兴趣的朋友可以参考一下,希望对你有所帮助!

由于某个原因,需要在PHP中调用R语音进行绘制图像。经过多方百度,目前大部分解决方案都是:利用PHP中的系统命令函数如exec,system,shell_exec等等来调用RScript脚本,常见的命令行有如下两种

第一种:

exec("RScript " . $your_script_dir . "$your_RScript_file " . $args);    // 里面有printf某个变量
// echo ("RScript " . $your_script_dir . "$your_RScript_file " . $args);

第二种:

 system("R --slave < " . $your_RScript_dir . "$your_RScript_file" . " --args " . $args); // 里面有printf某个变量
// echo ("R --slave < " . $your_RScript_dir . "$your_RScript_file" . " --args " . $args);

接下来,我们满怀信心地去运行PHP的时候,会发现我们所执行系统命令返回的值是1,也就是失败。但是,我们拿echo出来的语句去cmd窗口执行,发现是可以printf出结果,并且也生成了我想要的图像。这是为什么呢?经过多方百度跟尝试,终于找到解决方案。供大家参考并欢迎大家如果有更好的方法,也在评论区中发文,大家共同努力进步。

 一、简单看下失败的调用情况

a1.png这是我在PHP中调用的R脚本的语句,下面是在浏览器中调用的结果。

a111.png

我们再将echo出来的语句,在cmd中执行下。结果如下:

a2.png生成的文件如下:

a3.png

可以看到,我最后想要得到的$plotName是null,也就是没有执行成功,或者没有得到cmd中打印出来的文件信息。

二、解决方法

提供一个PHP插件,名字叫RServe,这个你如果是用Java来调用R语言的,想必并不陌生。现在出了PHP版本的,我们就可以拿过来使用。下载地址:Rserve-php

三、如何使用

当然,该插件有中间也有一些简单的例子,可以自行参考理解。下面放出我的解决方法:本人是基于ThinkPHP5的框架实现的。

1. 我们首先要将它加入到我们的项目中,我把该插件放到我的vendor里。添加如下代码:

require_once ROOT_PATH . &#39;vendor/rserve/autoload.php&#39;;

2. 根据自身需要使用里面的一些类

use Sentiweb\Rserve\Connection;            // 连接R服务的类
use Sentiweb\Rserve\Evaluator;             // 简单的理解为:建立连接后返回的处理器
use Sentiweb\Rserve\REXP\Vector;           // 内置的存储容器

3. 编写RScript脚本

我们需要将之前所编写的脚本,修改为R语言的函数。格式如下:

RScript <- function(arg1, ..., argN) {
    # code... 请无视这种注释方式,R语言没有注释
    return output    # 该函数的返回值
}

为后期我们利用Rserve插件调用。

4. 编写我们的PHP函数

我们为了后期方便调用,将调用RScript脚本的功能统一写到一个函数里面,方便阅读且容易维护。

class Common {
    // $source 表示自己编写的R语言函数文件
    // $file, $cancer:本R函数所需要参数
    function RScript($source, $file, $cancer) {
        $cnx = new Connection(RSERVE_HOST);                    // 与RSERVE_HOST建立连接,一般为自己服务器地址,如果本地,则为localhost
        $eval = new Evaluator($cnx, Evaluator::PARSER_REXP);   // 通过连接,生成处理器,后一个参数决定连接失败时返回错误信息
        $eval->evaluate("source(&#39;$source&#39;)");                  // 类似library,将函数载入R的编程环境中;evaluate计算括号内的R命令
        // 同理,执行R命令,注意括号内是字符串的形式,由于返回的是RServe的Rstring类,为了拿到我想要的信息,通过Vector类的toHTML转为含return信息的标签语言
        $RString = $eval->evaluate("RScript(&#39;$file&#39;, &#39;$cancer&#39;)")->toHTML();    
        preg_match("/$cancer.+.pdf/", $RString, $fileName);    // 提炼信息
        return $fileName[0];                                   // 返回结果
    }
}

5. 成功实现

这里我就不展示我的最终结果了,有这需要的同学们可以自己尝试。

四、失败的原因

由于项目时间紧迫,对PHP、R语言熟悉度不高,不明白为什么直接调用命令执行的结果是失败的。有这方面认识的小伙伴们,可以在评论里回复我。以上就是我关于PHP如何调用R语言脚本的全部解决方案。谢谢大家的阅读。

更多相关视频教程请访问 php编程从入门到精通全套视频教程

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
PHP et Python: différents paradigmes expliquésPHP et Python: différents paradigmes expliquésApr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

PHP et Python: une plongée profonde dans leur histoirePHP et Python: une plongée profonde dans leur histoireApr 18, 2025 am 12:25 AM

PHP est originaire en 1994 et a été développé par Rasmuslerdorf. Il a été utilisé à l'origine pour suivre les visiteurs du site Web et a progressivement évolué en un langage de script côté serveur et a été largement utilisé dans le développement Web. Python a été développé par Guidovan Rossum à la fin des années 1980 et a été publié pour la première fois en 1991. Il met l'accent sur la lisibilité et la simplicité du code, et convient à l'informatique scientifique, à l'analyse des données et à d'autres domaines.

Choisir entre PHP et Python: un guideChoisir entre PHP et Python: un guideApr 18, 2025 am 12:24 AM

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP et frameworks: moderniser la languePHP et frameworks: moderniser la langueApr 18, 2025 am 12:14 AM

PHP reste important dans le processus de modernisation car il prend en charge un grand nombre de sites Web et d'applications et d'adapter les besoins de développement via des cadres. 1.Php7 améliore les performances et introduit de nouvelles fonctionnalités. 2. Des cadres modernes tels que Laravel, Symfony et Codeigniter simplifient le développement et améliorent la qualité du code. 3. L'optimisation des performances et les meilleures pratiques améliorent encore l'efficacité de l'application.

Impact de PHP: développement Web et au-delàImpact de PHP: développement Web et au-delàApr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables?Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

Comment PHP gère le clonage des objets (mot-clé de clone) et la méthode de magie __clone?Comment PHP gère le clonage des objets (mot-clé de clone) et la méthode de magie __clone?Apr 17, 2025 am 12:24 AM

Dans PHP, utilisez le mot-clé Clone pour créer une copie de l'objet et personnalisez le comportement de clonage via la méthode de magie du clone \ _ \ _. 1. Utilisez le mot-clé Clone pour faire une copie peu profonde, en clonant les propriétés de l'objet mais pas aux propriétés de l'objet. 2. La méthode du clone \ _ \ _ peut copier profondément les objets imbriqués pour éviter les problèmes de copie superficiels. 3. Faites attention pour éviter les références circulaires et les problèmes de performance dans le clonage et optimiser les opérations de clonage pour améliorer l'efficacité.

PHP vs Python: cas d'utilisation et applicationsPHP vs Python: cas d'utilisation et applicationsApr 17, 2025 am 12:23 AM

PHP convient aux systèmes de développement Web et de gestion de contenu, et Python convient aux scripts de science des données, d'apprentissage automatique et d'automatisation. 1.Php fonctionne bien dans la création de sites Web et d'applications rapides et évolutifs et est couramment utilisé dans CMS tel que WordPress. 2. Python a permis de manière remarquable dans les domaines de la science des données et de l'apprentissage automatique, avec des bibliothèques riches telles que Numpy et Tensorflow.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.