Saturday, October 17, 2009

GNU Octave from PHP without temp files

Of course... How haven't I thought that? Pipes!

I was "googling" about PHP and Octave and I had found some simple approach at a mailing list archive. I had already used Octave with PHP but I had always used temporary files, but pipes are a much simpler approach.

From the mailing list post:
in php
start "octave -q script" with popen

create a string in php e.g. "input_data = [102 10 10 10 10 10];"

write this string to the pipe

in octave

recive the string with fread on stdin
let the eval function do the job

print the result with printf in php syntax "$result = array(12,10,9,12,)"

read the output from the pipe (with php fread)
use phps eval function

but using eval with octave and php is a security risk, to avid eval parse
the matrix wird scanf

this is also not the fastes way to use octave (the octave startup needs a
lot of time)


  1. Hello! I'm really interested about this idea, but I'm not sure how to implement it. Would you write a sample PHP file?

    Thank you very much!

  2. Juanlu_001,

    I didn't write any prototype calling the GNU Octave this way. As soon as I have one, I will post it here at my blog.

    What I already have about PHP+Octave is a old post on a pumps dimensioning system.

  3. Check out Octave daemon, if you ever need something like this again.