加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何从Perl CGI脚本中不断通知用户进度?

发布时间:2020-12-15 21:44:22 所属栏目:大数据 来源:网络整理
导读:我有这个Perl脚本位于我的Apache服务器的cgi-bin文件夹中: #!/usr/bin/perl use strict;use warnings;$| = 1;print "Content-type: text/htmlrnrn";print "Hello there!br /nJust testing .br /n";my $top = 5;foreach (1..$top) { print "i = $_br /
我有这个Perl脚本位于我的Apache服务器的cgi-bin文件夹中:
#!/usr/bin/perl 
use strict;
use warnings;

$| = 1;

print "Content-type: text/htmlrnrn";
print "Hello there!<br />nJust testing .<br />n";

my $top = 5;
foreach (1..$top) {
    print "i = $_<br />n";
    sleep 1;
}

我想在这里实现的是逐步更新网页以向用户显示更新状态.然而,我实际上得到的是在延迟5秒之后的整个输出.

有什么办法可以编写一个能够不断告知用户进度的脚本吗?我有一个脚本需要很长时间才能完成,我希望能够实时看到它的进度而不是完整的脚本.

我也尝试将autoflush模式设置为off($| = 0),但即便如此也没有做任何事情.

解决方法

兰德尔施瓦茨在 Watching long processes through CGI中表现出更好的方式.

也就是说,说谎内容类型无济于事.以下脚本完全按照您希望它在使用Apache 2.2的Windows XP上执行的操作(因为最后一行输出需要十秒钟):

#!/usr/bin/perl

use strict;
use warnings;

use CGI qw(:cgi);

print header('text/plain');

$| = 1;

print "Job startedn";

for ( 1 .. 10 ) {
    print "$_n";
    sleep 1;
}

现在,如果您要发送HTML,您无法避免这样的事实,即大多数浏览器会等到他们认为足够的页面才能开始呈现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读