Проблема бесконечного цикла с foreach - PullRequest
0 голосов
/ 22 июля 2011

Хорошо, у меня есть ENDLESS LOOP, мне нужен этот бесконечный цикл, ничего плохого в этом нет! Когда я запускаю этот скрипт через php script.php, он работает без проблем, но на втором этапе и так далее ... запускать он уже не работает должным образом. Я добавил в качестве теста вывод $ при втором запуске в БД, чтобы увидеть, что не так, и я получаю эту ошибку a:1:{i:0;s:24:"sh: 0: command not found";}, она сериализована.

Помните, что скрипт работает при первом запуске, но никогда при втором + запуске, что-то не так с $ output и $ video во втором 3-м + запуске,

Кодировка работает при каждом запуске, файлы переименовываются и перемещаются должным образом

Я пытался сбросить $output $video $duration и $error в конце скрипта, но затем я получаю сообщение об ошибке, переменные не определены во 2-й + прогон. Есть идеи, что не так?

О коде: я поместил фрагмент не полный код, если опечатки там его единственная ошибка copypaste.

Я думаю, что что-то с exec неверно, когда они дают вывод переменной во 2-й + прогон

Вот мой сценарий

<?php


while(10) {
    // Getting Data From DB
    $sql = "SELECT * FROM videos_to_edit WHERE status = 'pending' ORDER BY post_time ASC LIMIT 1";

    // Encoding Video;
    exec("$mencoder $temp_upload_dir$post_filename -o  $temp_upload_dir$r_post_id.mp4 2>&1", $output);

    // Checking if Mencoder could encode it
    foreach($output as $error) {

        if(preg_match('/============ Sorry, this file format is not recognized\/supported =============/', $error)) {

            $error1 = "error";

        }

    }
    if(!isset($error1)) {

        // Getting duration of Video with mplayer
        exec("$mplayer $temp_upload_dir$r_post_id.mp4 2>&1", $video);
        // Getting the duration with preg_match
        foreach($video as $vidlenght) {

            if(preg_match('/ID_LENGTH=/', $vidlenght)) {
                $duration = $vidlenght;
                $duration = explode("=",$duration);
                $duration = $duration['1'];

            }

        }


        // MOVING FILE TO PUBLIC DIR
        CODE HERE...

        //UPDATING DB
        $sql = "UPDATE videos_to_edit SET status = 'finished' WHERE post_id = ?";

    }
}   
?>

1 Ответ

2 голосов
/ 22 июля 2011

Может быть потому, что вы никогда не сбрасываете $error1? Если это когда-либо установлено здесь:

$error1 = "error";

остается установленным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...