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。实际上,如果编码失败,代码似乎不会修改数据库,所以下次它选择相同的挂起视频时,尝试再次编码,等等。