我想在执行Perl-CGI程序中的特定命令期间显示迭代进度栏。我使用CGI::ProgressBar模块来实现这一点。例如,如果我想表明的RKHunter扫描的执行过程中的进度条,这是我写的代码:在执行Perl-CGI命令期间打印进度条
使用CGI ::进度QW /:标准/; $ | = 1;
print progress_bar(-from=>1, -to=>100);
open(my $quik_rk, '-|', 'rkhunter', '--enable', '"known_rkts"') or print "ERROR RUNNING BASIC ROOTKIT CHECK!!";
# print the progress bar while the command executes
while(<$quik_rk>)
{
print update_progress_bar;
#print "<img src=\"ajax-loader.gif\"></img>";
}
close($quik_rk);
这工作正常。但是,我尝试另一个命令相同上面的代码后(这其中的扫描使用Linux Maldet)直接:
open(my $quik_lmd, '-|', 'maldet', '-a', '/home?/?/public_html') or print "ERROR RUNNING BASIC MALWARE CHECK!!";
my $this_ctr = 0;
while(<$quik_lmd>)
{ $this_ctr++;
print update_progress_bar;
}
close($quik_lmd);
的进度条不执行,但te命令本身在后台运行。
我在做什么错? 有没有更好的方式在Perl-CGI的浏览器上显示进度条?
顺便说一句,使用这种技术,但开放的W /轻微的改变()的参数,你可以排序的观看卷曲命令并创建自己的进度条。我的安装程序有一个GUI,并在后台启动Perl,启动卷曲。你的例程为我解决了令人沮丧的12小时问题! – Volomike