无限循环问题$ var未设置或未更新

时间:2011-07-20 10:33:38

标签: php variables while-loop infinite-loop

我通过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
}
}

1 个答案:

答案 0 :(得分:0)

当你这样做时

while(10) 

你告诉的程序是什么

while(10==10)

正在寻找一个布尔值,即(真或假)。由于10将等于10并且总是等于10,因此该陈述始终为真。退出的唯一方法是:

break;

你的foreach循环只有休息时间。因此,你没有什么可以打破你的while循环。至于为什么你的变量没有被正确设置,看起来你只是在完成循环播放视频之前就过早地打破了foreach循环。