PHP Exec: Without Waiting, Without Discarding the Output, Without nohup
Pregunta
I need to run a command in PHP like this:
exec('dosomething > saveit.txt');
Except I don't want PHP to wait for it to be complete. I also don't want to throw away the output, and I don't want to use nohup because I'm using that for something else in the same directory.
I also tried pclose(popen('dosomething > saveit.txt','r'));
and that didn't work, it still waited.
Solución
Add an ampersand to the end of the command, so:
exec('dosomething > saveit.txt &');
Otros consejos
in the documentation of exec()
there is an interesting comment that says:
Took quite some time to figure out the line I am going to post next. If you want to execute a command in the background without having the script waiting for the result, you can do the following:
<?php
passthru("/usr/bin/php /path/to/script.php ".$argv_parameter." >> /path/to/log_file.log 2>&1 &");
?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow