PHP无需等待即执行命令和日志输出

use*_*430 7 php linux windows cmd

我使用exec()执行命令,无论是linux还是windows.

如何执行命令,linux和Windows,并在不等待的情况下记录输出?

我知道对于linux,不要等待输出: command* > /dev/null 2>/dev/null &

并记录linux的输出: command* > /path/to/log.txt 2>/path/to/error.txt

你会如何在一个命令中记录并将其设置为后台?窗户怎么样?

Mik*_*osh 16

在Linux上你可以做到:

exec('command* > /dev/null 2>/dev/null &');
Run Code Online (Sandbox Code Playgroud)

在Windows上,您可以:

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r'));
Run Code Online (Sandbox Code Playgroud)

这两个示例禁用输出和错误,这些都转到/dev/null(linux)或NUL(windows),这意味着它们"无处"存储.

您可以使用系统上的有效路径替换它们.

在Linux上,&最后将它置于后台.在Windows上,这更复杂,需要start调用进程并cmd允许重定向流.

  • 您可以将输出定向到文件,然后fopen /!feof日志文件 (2认同)