繁体   English   中英

将php系统命令输出转储到文件

[英]Dump php system command output to a file

在php系统命令中,我们使用以下内容

system("ffmpeg -i test.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv output_file.flv 2>&1 &"). 

请解释上述系统命令的用法。 '2>&1&'代表什么? 我想将进程详细信息转储到文件中,我该怎么做?

非常感谢你。

2>&1重定向« stderr »« stdout »&在端部使得在命令运行背景

要完成它应该是

«command» 2>&1 > /tmp/somefile.log &

没有将« stdout »重定向到从system()在后台运行的文件(或/dev/null )没有多大意义,因为一旦PHP终止(例如达到时间限制),你的命令就会被杀死。

来自system()手册:

注意:如果使用此功能启动程序,为了使程序在后台继续运行,程序的输出必须重定向到文件或其他输出流。 如果不这样做将导致PHP挂起,直到程序执行结束。

2>&1将标准错误(2)日志重定向到标准输出(1)。

不确定额外的和最后的是什么。

如果要将stderr或stdout传递给文件,可以轻松完成。

要将stderr管道传输到文件,请将2>&1更改为2> filepath

文件路径最好是绝对文件路径(例如:2> /home/user/output.mpg)

每个UNIX程序都有两个输出流:stdout和stderr。 出于重定向的目的,>符号将stdout(文件描述符1)重定向到文件。 “2>”将stderr(文件描述符2)重定向到一个文件,在本例中用“&1”表示,它告诉shell使用文件描述符1(stdout)。 在php上下文中,这意味着两个流都将打印在您的脚本输出中,您现在怀疑它已经找到了。

命令末尾的&告诉shell在后台运行作业。 我不知道你为什么要在这种环境中这样做。

如果要通过PHP写入文件,还可以使用[exec()][1][passthru()][2] ,它们具有从命令返回所有内容的选项。 system()只返回最后一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM