shell_exec回显过快或过晚

时间:2016-09-14 23:03:57

标签: php ffmpeg shell-exec

所以我通过这篇文章阅读: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正在后台执行(因此整个选项卡上没有加载符号)所有的回声都是正在立即执行。这意味着,&#34;完成&#34;在ffmpeg完成任务之前正在编写echo。

但是当我删除&#39;&amp;&#39;该网站也会做它打算做的事情,但现在它等到shell_exec完成,直到它回显出#34;开始ffmpeg ......&#34;

所以我有一个问题,想知道如何达到这样的顺序:

1)回应一些事情 2)执行commad并等到它完成。 3)再次回声

我是php的初学者,但总体上有编程经验。请怜悯。

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

在执行shell_exec之前,您可能希望使用flush。有一些注意事项可以使用它,这在php文档页面中有很好的解释。希望这会有所帮助。

<?php
  echo "Starting ffmpeg...\n\n";

  ob_flush();
  flush();
  echo shell_exec("ffmpeg -i input.avi output.avi >/dev/null 2>/dev/null");

  // a sleep could effectively be the same as your shell_exec operation
  // sleep(5);

  echo "Done.\n";
  ob_end_flush();