Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP execute command and log output without waiting

I use exec() to execute command, either linux or windows.

How do you execute a command, linux and windows, and log the output without waiting?

I know for linux, to not wait for the output: command* > /dev/null 2>/dev/null &

And to log output for linux: command* > /path/to/log.txt 2>/path/to/error.txt

How would you go about logging and setting it to background in one command? How would windows look like too?

like image 745
user1105430 Avatar asked Jun 28 '12 18:06

user1105430


1 Answers

On Linux you can do:

exec('command* > /dev/null 2>/dev/null &');

On Windows you can do:

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r'));

Both examples disable output and errors, those go to /dev/null (linux) or NUL (windows) which means they are stored "nowhere".

You can replace these with valid paths on your system.

On Linux, a & at the end places it into background. On windows this is more complicated and needs start to invoke the process and cmd to allow redirection of the streams.

like image 55
Mike Mackintosh Avatar answered Sep 22 '22 12:09

Mike Mackintosh