Из того, что я нашел, функция exec блокируется, пока не завершится преобразование ffmpeg.
Например, вы можете запустить ffmpeg следующим образом в вашем PHP-скрипте:
exec($encode, $output);
(где $ encode - это команда ffmpeg в виде строки, а $ output - массив каждой строки вывода из ffmpeg.)
Для меня эта команда exec блокирует продолжение моего PHP-скрипта до тех пор, пока не завершится преобразование ffmpeg, после чего мой PHP-скрипт продолжается, что, как представляется, описано в руководстве по PHP:
http://php.net/manual/en/function.exec.php
Таким образом, вы можете определить, когда exec завершен, следуя команде exec с другой командой PHP на следующей строке в вашем скрипте, которая уведомляет вас о завершении преобразования, или обновляет базу данных или что-то еще.
К вашему сведению, я полагаю, что перевод команды exec «в фон» означает выполнение команды exec, но выполнение сценария PHP продолжается одновременно (т.е. асинхронно). Для запуска команды exec в фоновом режиме, Google "PHP background exec" или "php multi-process", такой как:
http://www.php.net/manual/en/ref.exec.php#80241
http://www.sitecrafting.com/blog/to-run-php-code-in/