Php foreach的无穷循环问题

Php foreach的无穷循环问题,php,loops,foreach,exec,infinite-loop,Php,Loops,Foreach,Exec,Infinite Loop,好的,我有一个无止境的循环我需要一个无止境的循环,没有问题!当我通过php script.php启动该脚本时,它可以正常工作,但在第二个第三次运行时,它就不能正常工作了。我在第二次运行时将$output作为test添加到DB中,以查看有什么错误,我得到了这个错误a:1:{I:0;s:24:“sh:0:command not found”;}它的序列化 请记住,脚本在第一次运行时有效,但在第二次+运行时不会有效,在第二次+第三次运行时,$output和$video出现问题 每次运行时编码都有效,文

好的,我有一个
无止境的循环
我需要一个无止境的循环,没有问题!当我通过
php script.php
启动该脚本时,它可以正常工作,但在第二个第三次运行时,它就不能正常工作了。我在第二次运行时将$output作为test添加到DB中,以查看有什么错误,我得到了这个错误
a:1:{I:0;s:24:“sh:0:command not found”;}
它的序列化

请记住,脚本在第一次运行时有效,但在第二次+运行时不会有效,在第二次+第三次运行时,$output和$video出现问题

每次运行时编码都有效,文件也会正确重命名和移动

我试图在脚本末尾取消设置
$output
$video
$duration
$error
,但在第二次以上运行时出现了一个错误,变量未定义。有什么想法吗?怎么了

关于代码:我放了一个片段而不是完整的代码,如果在那里输入错误,这是唯一的复制粘贴错误

我的想法是,
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 = ?";

    }
}   
?>

可能是因为您从未重置过
$error1
?如果设置在这里:

$error1 = "error";

它保持不变。

为什么使用
(10)
?这种情况总是正确的。因为我想要一个无休止的循环,请阅读上面的文本嗨,对不起,上面的代码中没有,$error也会在脚本末尾重置。您的代码会选择一个挂起的视频,尝试对其进行编码,如果失败,则设置$error1,然后循环。在选择下一个视频之前,我看不到您在哪里重置$error1。实际上,如果编码失败,代码似乎不会修改数据库,所以下次它选择相同的挂起视频时,尝试再次编码,等等。