Проблема с бесконечным циклом $ var не устанавливается или не обновляется - PullRequest
0 голосов
/ 20 июля 2011

Я вызываю этот скрипт по HTTP, позже это будет сделано с помощью php-cli. Первое кодирование видео я получаю правильную длительность, и правильные данные вводятся в БД, но когда скрипт получает второе видео, все работает, только продолжительность неправильная, получает данные из последней вставки, если я сбрасываю переменные, я получаю эту ошибку

PHP Notice:  Undefined variable: duration

и я знаю, что это бесконечный цикл, у меня также есть команда sleep в скрипте, чтобы db не вызывался все время. Как я могу заставить его работать, что $ duration получает реальное значение. Первый процесс работает, второй работает, кроме продолжительности.

Сейчас я работаю на 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 голосов
/ 20 июля 2011

Когда вы делаете

while(10) 

что вы говорите программе:

while(10==10)

Пока ищет логическое значение, т. Е. (Истина или ложь). Поскольку 10 будет равно 10 и всегда будет равно 10, это утверждение ВСЕГДА верно. Единственный способ выйти - это * 1007

break;

У вас есть только разрывы в циклах foreach. Поэтому вам нечего выходить из цикла. Что касается того, почему ваши переменные не установлены должным образом, похоже, что вы просто вырываете циклы foreach слишком рано, прежде чем они закончат просмотр видео.

...