我目前遇到了一个在我想要它之前运行的 shell 命令的问题。例如,我有 6 个命令我都想连续运行,前 5 个运行良好,但是一旦我到达最后一个,它依赖于前一个产生的输出,它就不会运行. 换句话说,有没有办法让我的最后一个命令不运行,直到第五个命令完全完成?这是针对这种情况的代码片段的快速浏览。
/*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。但它目前无法正常工作,因为我需要一种方法来以某种方式延迟 command_4 的执行,直到 command_3 完全完成(渲染所有 50 帧)。
如果有人想知道所有星号('*')是什么,那只是我在服务器中显示我的实际位置时感到不舒服。对不起,如果这让任何人感到困惑。