如何设置一个进程,使其在另一个进程之后执行


How do you set a process up so it executes after another process?

我有一个php视频上传器脚本,最后它启动一个ffmpeg脚本来转换上传的文件。然后,它将视频信息插入到mysql数据库中,并在状态字段中插入值0,因为文件正在处理中。

我想,在使用linux ffmpeg命令的同时,我可以放置一个执行php文件的延迟进程,这样在文件转换和ffmpeg进程完成后,它就会执行php文件,该文件有一个更新语句,可以将mysql数据库中的视频条目更新为1。不过,要做到这一点,我需要以某种方式将视频id传递到终端,以便它可以将其传递到php文件。。。有人知道怎么做吗?

$sql = 'INSERT INTO video (id, uploader, video_id, status) VALUES(?,?,?,?)';
$stmt3 =$conn->prepare($sql);
$result=$stmt3->execute(array($id,$username,$video_id,0));
$command = shell_exec('/usr/local/bin/ffmpeg -i /home/g/Desktop/'.$id2.' -acodec libfaac -aq 100 -vcodec libx264 -preset slow -crf 22 -threads 0 /home/g/Desktop/'.$id2.'.flv');

试试这个:

$command = shell_exec('/usr/local/bin/ffmpeg -i /home/g/Desktop/'.$id2.'' .
    '-acodec libfaac -aq 100 -vcodec libx264 -preset slow -crf 22 -threads 0' .
    '/home/g/Desktop/'.$id2.'.flv && /usr/bin/php /home/g/bin/update_db.php ' . $id2);

它表示如果ffmpeg(1)命令成功,则执行'/usr/bin/php /home/g/bin/update_db.php ' . $id2。(它可能会失败。)

要在shell上尝试此操作,请执行以下操作:true && echo hifalse && echo hi