i'm aware can run background process following:
exec("dotask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); (taken from: run php task asynchronously)
however have script depends on status of first execution. example:
mongoexport ... | awk ... > my.csv && zip myzip my.csv the csv file must exists before can zip.
update: filename , few query conditions user submitted values.
so have like:
exec("mongoexport ... | awk ... > my.csv && zip myzip my.csv > /dev/null 2>&1 &); but doesn't work. php hangs there waiting script finish running.
i tried
exec("mongoexport ... | awk ... > my.csv &); that works.
so && reason doesn't run in background?
how can make example run in background?
the following work
exec("(mongoexport ... | awk ... > my.csv && zip myzip my.csv) > /dev/null 2>&1 &") it tells shell run sequence of commands enclosed in braces in background process , redirect output, exec function has nothing wait for.
in example, shell launched exec waited awk finish , after ran zip in background (if awk exited status 0)
Comments
Post a Comment