У меня возникла проблема с командой оболочки, которая работает до того, как я захочу. Например, у меня есть 6 команд, которые я хочу запустить последовательно, а первые 5 работают нормально, но как только я доберусь до последнего, который опирается на результат, полученный предыдущим, он не будет работать , Другими словами, есть ли в любом случае, что я могу сделать свою последнюю команду не запущенной UNTIL, пятый полностью завершен? Ниже приведен краткий обзор фрагмента кода для этой ситуации.Нужна команда shell_exec для ожидания до ее выполнения.
/*Renders user image*/
//$command_1 = 'cd ./***/; povray +I'.$newname.' +O'.$newname_t.' +D '.$_POST['AA'].' +H75 +W100';
$command_2 = 'cd ./***/; povray +I'.$newname.' +O'.$newname_i.' +D '.$_POST['AA'].' '.$_POST['resolution'];
/*Command to copy the .pov, .ini, and .inc files from User_Files to the correct animation directory before frame renders can be done*/
$command_cp_pov = 'cp ***'.$newname.' ***'.$location;
$command_cp_ini = 'cp ***'.$newname_j.' ***'.$location;
$command_cp_inc = 'cp *** ***'.$location;
/*Render the frames for the animation*/
$command_3 = 'cd ***'.$location.'; povray +I '.$newname_j.' +A +H384 +W512'.'> /dev/null 2>/dev/null &';
/*Testing purposes*/
//echo $command_3."\n";
/*Throw together the animation using the .png files in the directory*/
$command_4 = 'cd ***'.$location.'; convert -delay 0 -loop 0 *.png animation.gif'.'> /dev/null 2>/dev/null &';
/*Testing purposes*/
//echo $command_4;
$shellOutput = shell_exec($command_2);
$shellOutput = shell_exec($command_cp_pov);
$shellOutput = shell_exec($command_cp_ini);
$shellOutput = shell_exec($command_cp_inc);
$shellOutput = shell_exec($command_3);
// I want this command to run once the previous one is completely finished
$shellOutput = shell_exec($command_4);
5-shell_exec команда работает .ini файл с помощью POVRAY создать 50 кадров сцены, так что я могу затем использовать ImageMagick, чтобы поместить все эти кадры вместе в GIF. В настоящее время он работает некорректно, потому что мне нужен способ как-то задержать выполнение команды_4 до тех пор, пока команда command_3 не будет полностью завершена (все 50 кадров будут визуализированы).
Если кому-то интересно, что означают все звездочки ('*'), то это просто я не чувствую себя комфортно, показывая свои фактические местоположения на моем сервере. Извините, если это смущает кого угодно.
вы можете проверить, работает ли процесс, глядя на его идентификатор процесса. –