近期在开发项目中遇到了PHP使用shell_exec
执行Shell命令的问题,具体说是Shell使用FFmpeg软件进行录制直播流,但是PHP等待命令执行时间是有限的,并且会出现等待时间过长导致该执行接口出现未响应问题,寻找了网上方法,发现了一种比较好的方式,就是将要执行的Shell语句后面加上>/dev/null 2>&1
这段特殊的命令,简单来说就是将执行的Shell操作放到后台进行运行,将快捷反应执行的操作,解决执行Shell语句等待问题,接下来就是对这段命令的解析:
命令的结果可以通过%>的形式来定义输出。
/dev/null
代表空设备文件echo "123" > /home/123.txt
;>/dev/null
“等同于”1>/dev/null
“;针对下面数字的代表含义的解释:
> /dev/null 2>&1 语句含义:
> /dev/null
: 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1
:接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。