PHP Exec: без ожидания, без отбрасывания вывода, без nohup - PullRequest
0 голосов
/ 09 ноября 2011

Мне нужно запустить команду в PHP следующим образом:

exec('dosomething > saveit.txt');

За исключением того, что я не хочу, чтобы PHP ждал его завершения. Я также не хочу выбрасывать вывод, и я не хочу использовать nohup, потому что я использую это для чего-то другого в том же каталоге.

Я также попробовал pclose(popen('dosomething > saveit.txt','r'));, и это не сработало, оно все еще ждали.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Добавьте амперсанд в конец команды, поэтому:

exec('dosomething > saveit.txt &');
3 голосов
/ 09 ноября 2011

в документации exec() есть интересный комментарий , который говорит:

Потребовалось некоторое время, чтобы выяснить, какая я линиясобираюсь опубликовать следующий.Если вы хотите выполнить команду в фоновом режиме без сценария, ожидающего результата, вы можете сделать следующее:

 <?php
  passthru("/usr/bin/php /path/to/script.php ".$argv_parameter." >> /path/to/log_file.log 2>&1  &");
 ?>
...