2011-06-10 111 views
1

我有一个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'); 

回答

1

试试这个:

$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

+0

那么是$ id2发布或获取update_db.php?你在档案中是指什么? – Scarface 2011-06-11 17:27:36

+1

@Sfaceface,它可能是['$ argv [1]'或'$ argv [2]'](http://php.net/manual/en/reserved.variables.argv.php)。 (我不知道'$ argv [0]'是PHP解释器'/ usr/bin/php'还是'$ argv [0]'是PHP脚本'/ home/g/bin/update_db .php'。但一些小测试会显示。:) – sarnold 2011-06-11 20:39:19

+0

它的工作原理,谢谢sooooooo很多sarnold。你是最好的。 – Scarface 2011-06-11 21:48:48

相关问题