【发布时间】:2017-01-22 21:05:10
【问题描述】:
所以我阅读了这篇文章:https://trac.ffmpeg.org/wiki/PHP 发现了这个:
<?php
echo "Starting ffmpeg...\n\n";
echo shell_exec("ffmpeg -i input.avi output.avi >/dev/null 2>/dev/null &");
echo "Done.\n";
代码几乎可以正常工作,但唯一困扰我的是,因为 shell_exec 是在后台执行的(所以标签上始终没有加载标志)所有的 echo 都会立即执行.这意味着,在 ffmpeg 完成其任务之前正在写入“完成”回声。
但是当我删除 '&' 时,该站点也会执行它打算执行的操作,但现在它会等到 shell_exec 完成,直到它回显“正在启动 ffmpeg...”
所以我有点想知道如何获得这样的订单:
1) 回显某些东西 2)执行 commad 并等待它完成。 3) 再次回显
我是 php 的初学者,但总体上具有编程经验。请发慈悲。
感谢您的宝贵时间!
【问题讨论】:
-
在命令末尾使用 & 将立即返回(并在后台运行该进程)这就是页面加载并在命令输出完成之前显示最终 echo 语句的原因。这个答案提供了一种无需等待完成即可启动任务的方法,并且还可以查询转换的进度stackoverflow.com/a/6245461/2543650
标签: php ffmpeg shell-exec