foreach的无尽循环问题

时间:2011-07-22 18:42:03

标签: php loops foreach exec infinite-loop

好的,我有一个ENDLESS LOOP我需要这个循环无穷无尽!当我通过php script.php启动该脚本时,它没有问题,但是在第二个thrid上等等...运行它不再适用。我在第二次运行时将数据添加到数据库中以查看错误,并且我将此错误a:1:{i:0;s:24:"sh: 0: command not found";}序列化。

请记住,脚本在第一次运行时有效,但从未在第二次运行时运行,$ output和$ video在第二次运行时运行错误,

编码在每次运行中都有效,文件也可以正确重命名,并且正确移动

我尝试在脚本末尾取消设置$output $video $duration$error,但是我收到错误,第二次+运行时未定义变量。任何想法都错了吗?

关于代码:我把一个代码片段不是完整的代码,如果拼写错误在其中只有copypaste错误。

我的想法是exec错误,当他们在第二次+运行时将输出提供给变量时

这是我的剧本

<?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 个答案:

答案 0 :(得分:2)

可能是因为你从未重置$error1吗?如果它曾经在这里设置:

$error1 = "error";

它仍然存在。