Skip to content

wuya6878/rserve-php

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rserve-php

php5 client for Rserve http://www.rforge.net/Rserve/ (a TCP/IP server for R statistical software)

Maturity

The library provide several way to parse R structures ($parser parameter in evalString)

  • native php array : you get only the results in nested php array (without R attributes). It's a good way to handle simple R results. This feature is in beta and has unit tests

  • wrapped native php array : you get the results in a simple object (RNative) with results as php array and you can access to R object attributes.

  • Debug : full description of the Rserve protocol results

  • REXP: All R structures are wrapped in an REXP_* class This feature is in alpha: not very documented, tests in progress. Only low level R structures are handled (data.frame is a GenericVector, etc..)

Tests

You can run tests using phpunit

  • Create a file config.php in the "tests" directory (copy config.php.sample)
  • define the constant RSERVE_HOST with the address of your Rserve server (custom port not supported yet)
  • run tests . phpunit tests\ParserNativeTest.php . phpunit tests\SessionTest.php . phpunit tests\REXPTest.php
  • define the constants RSERVE_PORT, RSERVE_USER, RSERVE_PASS to config.php (along with RSERVE_HOST)
  • run test . phpunit tests\LoginTest.php

Usage

The use of the library is simple

  1. create an instance of Rserve_Connection

$cnx = new Rserve_Connection('myserverhost');

  1. Send R commands and get the results as Php array

$result = $cnx->evalString('x ="Hello world !"; x');

// Get results as a REXP object tree $result = $cnx->evalString('x="Toto is my Hero"', Rserve_Connection::PARSER_REXP);

// Get as wrapped native array (object with array behaviour and attributes) $result = $cnx->evalString('x="Toto is my Hero"', Rserve_Connection::PARSER_NATIVE_WRAPPED);

This will produce a php array containing R results (using native array parser). Others parsers could be used by using $parser parameters (@see Rserve_Connection)

Using Login Authorization

Usage is the same as the vanilla usage, except for the constructor $cnx = new Rserve_Connection('myserverhost',serverport,array('username'=>username,'password'=>password))

Async Mode

Several functions allow to use connection in async mode

  • getSocket() to get the socket an set some options
  • setAsync() allow to set the async mode
  • getResults($parser) : get and parse the results after a call to evalString() in async mode

Files Description

  • Connection.php : main class Rserve_Connection, you only need to manipulate an instance of this class (evalString method for now)
  • helpers.php : helpers function librairies
  • Parser.php : Parser class used to Parse Rserve binary packets to php structures (native array or REXP children)
  • RNative.php : an array wrapper used to catch attributes (experimental, usefull ?)
  • REXP/*.php : R expression classes

Contacts

Clément Turbelin, clement.turbelin@gmail.com http://www.sentiweb.fr Université Pierre et Marie Curie - Paris 6, France

About

Rserve client php library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 99.4%
  • CSS 0.6%