[ class tree: octave-daemon ] [ index: octave-daemon ] [ all elements ]


Explains the purpose and philosophy of this project


GNU Octave is an extremely fast solution for large, complex numerical computations. For small scale projects, running ad hoc Octave instances for processing is perfectly acceptable. However, for larger projects, running new Octave instances for each processing operation can become inefficient.

This daemon features the following advantages over the ad hoc approach:

  • The daemon is accessible via network, which means you can move all Octave processes on a separate server, should you decide you need to;

  • Octave processes are persistent, which means that:

    • any data that has been loaded or computed in the past will still be available for newly-connected clients;

    • startup times for new Octave processes don't affect clients.

In addition, the Octave daemon package also implements the following features:

  • Allows for seamless usage of ad hoc processes, which is particularly useful for prototyping and development;

  • Octave errors and warnings are properly retrieved and are easily accessible;

  • Provides conversions between Octave matrices and PHP arrays.

If you have a choice on whether to use ad hoc instances or the network daemon in production, please consult the Quick Start section to make an informed decision.


You should be aware of the following before considering if and how to use this daemon in production:

  • There is no security in place. There is no authentication, there are no disk, CPU time or memory quotas, and the retr command can be used to retrieve any file on the server. The only security provision in place is the basic IP filter option in the server; and even that is very crudely implemented, you shouldn't rely solely on that feature.

  • You can limit the number of Octave instances running on the server using Octave_pool::$maxCount, but you can't limit the amount of memory each instance gobbles up. And remember that whatever gets used, remains in use -- the processes are persistent, so it only takes one rogue client to mess it up for everybody. It's your responsibility, as an end user, to keep things nice and tidy and clean up your temporary variables (or to clean everything up once in a while), using Octave's own mechanisms.

Given all of the above, this daemon is meant to be used in a closed environment by automated agents -- don't open up your daemon or its clients to direct control by human operators, or you know there's going to be trouble.

Documentation generated on Mon, 13 Jun 2011 14:26:23 +0200 by phpDocumentor 1.4.3