Execution Order seems not to work. Any wait neccessary...?

Execution Order seems not to work after "Execute Program". "Execute Program" (PHP Script inside) do two things. I have added a "sleep(1)" at the end of the PHP Script (wait 1 second). But this has no effect.
<?php
// echo 'start php';
$aData = array();
$sData = null;
$sData = file_get_contents('M:/Scannen-AS/rapidminer-php-input.csv');
$aData = explode(PHP_EOL,$sData);
asort($aData);
$sData = implode(PHP_EOL,$aData);
// fwrite(STDOUT, $sData);
file_put_contents('M:/Scannen-AS/rapidminer-php-output.csv',$sData);
sleep(1);
?>
a) read a files and reorder it
b) write a new file with the ordered data
After this "Load File" give me an Error. But the missing file exist. If I run the process a second time (without delete the work files directory) the process seems to work.
Pic. Working file directory
Any help?
Thanks!
Thomas
Find more posts tagged with
Hi @thomas_wiedmann,
as a side node. I can recommend the Delay and the Subprocess operators to enforce execution order.
Best,
Martin
Hi @Thomas_Ott
If I locked the "old" rapidminer-php-output.csv the PHP Script inside "Execute Programm" can't write.
Thanks!
Thomas
Hi @thomas_wiedmann,
Attached is a screenshot what @mschmitz was talking about.
This way you can omit 'sleep' in your PHP script. The Delay value is in ms. And by moving Open File and Read CSV into a Subprocess you can easily enforce the execution order.
Hope this helps,
Edin
Hi @thomas_wiedmann,
is there any reason why you have a subprocess *and* Open file & Read CSV?
The proposed solution uses the Subprocess Operator only because it has an input port and therefore can be connected.
Best,
Edin
Yes, I found no way get the piped data inside PHP like described here:
So I decide to use real files to pipe data thru "Execute Program" (PHP Script). PHP found no data on STDIN and waits forever.
Maybe I make a mistake using PIPE, but I did'nt found it.
rem --- rapidminer-start-php.bat ---
d:
cd d:\wiedmann\tools\php-5.6.13-Win32-VC11-x86
php rapidminer.php
exit
<?php
// echo 'start php';
$aData = array();
$sData = null;
while($f = fgets(STDIN)){
$aData = $f;
}
$sData = implode(PHP_EOL,$aData);
file_put_contents('M:/Scannen-AS/rapidminer-php-log-input.csv',$sData);
asort($aData);
$sData = implode(PHP_EOL,$aData);
file_put_contents('M:/Scannen-AS/rapidminer-php-log-output.csv',$sData);
fwrite(STDOUT, $sData);
// echo 'end php';
?>
Regards,
Thomas
Hi @thomas_wiedmann,
as a side node. I can recommend the Delay and the Subprocess operators to enforce execution order.
Best,
Martin
Ok, I think this is related to a path issue.
Windows has this type of directory structure M:\Path\to\file, whereas the error is saying it can't find M:/Path/to/file. Does the file reside on a windows machine but it's pathed differently?