我的 Apache 服务器的 cgi-bin 文件夹中有这个 Perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
$| = 1;
print "Content-type: text/html\r\n\r\n";
print "Hello there!<br />\nJust testing .<br />\n";
my $top = 5;
foreach (1..$top) {
print "i = $_<br />\n";
sleep 1;
}
我在这里想要实现的是逐步更新网页以向用户显示更新的状态。然而,我实际上得到的是在延迟 5 秒后立即得到的整个输出。
有什么方法可以编写一个能够持续通知用户其进度的脚本吗?我有一个需要很长时间才能完成的脚本,我希望能够实时看到其进度,而不是整个脚本才能完成。
我还尝试将自动刷新模式设置为关闭($| = 0),但即使这样也没有任何作用。
兰德尔·施瓦茨 (Randal Schwartz) 展示了更好的方法通过 CGI 观看长流程.
也就是说,在内容类型上撒谎是没有帮助的。下面的脚本完全符合您在使用 Apache 2.2 的 Windows XP 上执行的操作(因为需要 10 秒才能出现最后一行输出):
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:cgi);
print header('text/plain');
$| = 1;
print "Job started\n";
for ( 1 .. 10 ) {
print "$_\n";
sleep 1;
}
现在,如果您要发送 HTML,则无法避免这样一个事实:大多数浏览器会等到他们认为页面足够了才开始渲染。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)