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


PHP execute command and log output without waiting

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

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

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

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

您将如何在一个命令中记录并将其设置为后台?窗户也会是什么样子?

在 Linux 上,你可以做:

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

在 Windows 上,您可以执行以下操作:

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

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

您可以将这些替换为系统上的有效路径。

在 Linux 上,末尾的&将其置于后台。在Windows上,这更复杂,需要start来调用进程和cmd以允许流的重定向。