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
Octave processes are persistent, which means that:
In addition, the Octave daemon package also implements the following
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
Provides conversions between Octave matrices and PHP
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.