所以我通过这篇文章阅读: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的初学者,但总体上有编程经验。请怜悯。
感谢您的时间!
答案 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();