我通过HTTP调用该脚本,稍后将使用php-cli完成。第一个视频编码,我得到正确的持续时间,并在数据库中输入正确的数据,但当脚本获得第二个视频全部工作,只有持续时间错误,从最后一次插入获取数据,如果我取消设置vars我得到此错误
PHP Notice: Undefined variable: duration
我知道这是一个无限循环,我在脚本中也有一个sleep命令,这样db就不会一直被调用。我怎么能得到它的工作,$持续时间获得真正的价值。首先处理它的工作,第二个工作除了持续时间。
现在我正在使用Windows LAMP,还没有测试centos上的脚本
while(10) {
// GET DATA FROM DB
// CHECK STATUS
if($check == true) {
exec("$mencoder $temp_upload_dir$post_filename -o $temp_upload_dir$r_post_id.mp4 2>&1", $output);
foreach($output as $error) {
if(preg_match('/============ Sorry, this file format is not recognized\/supported =============/', $error)) {
$error1 = "error";
break;
}
}
if(!isset($error1)) {
exec("$mp4box $temp_upload_dir$r_post_id.mp4");
exec($mplayer . " " . $temp_upload_dir . $r_post_id . ".mp4 2>&1", $video);
foreach($video as $vidlenght) {
if(preg_match('/ID_LENGTH=/', $vidlenght)) {
$duration = $vidlenght;
$duration = explode("=",$duration);
$duration = $duration['1'];
break;
}
}
// MOVE FILES
// UPDATE DB
}
}
答案 0 :(得分:0)
当你这样做时
while(10)
你告诉的程序是什么
while(10==10)
正在寻找一个布尔值,即(真或假)。由于10将等于10并且总是等于10,因此该陈述始终为真。退出的唯一方法是:
break;
你的foreach循环只有休息时间。因此,你没有什么可以打破你的while循环。至于为什么你的变量没有被正确设置,看起来你只是在完成循环播放视频之前就过早地打破了foreach循环。