如何持续通知用户 Perl CGI 脚本的进度?

2023-11-22

我的 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(使用前将#替换为@)

如何持续通知用户 Perl CGI 脚本的进度? 的相关文章

  • 无法上传大于 8MB 的文件

    我正在尝试制作一个文件上传脚本 并且我已经为这个问题苦苦挣扎了一段时间 我已阅读并尝试了与此相关的所有答案 但无济于事 这是我在 php 中尝试过的 文件名 file uploads On upload max filesize 100M
  • Apache mod_rewrite:仅当不在本地主机中时才强制 www

    我的 htaccess 中有以下内容来强制 URL 中包含 www RewriteCond HTTP HOST www RewriteRule http www HTTP HOST 1 R 301 L 如果不在本地主机上 我该如何应用它 我
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • Apache 配置:正则表达式禁止访问以点开头的文件/目录

    我想禁用对其名称以点开头的任何文件或目录的访问 我想出了以下方法 但只有当它们直接位于文档根目录中时 它才会禁用对以 DOT 开头的文件 目录的访问
  • 如何使用内容类型:多部分/相关

    我想向用户发送一个二进制文件 并在浏览器上显示一些 HTML 我正在使用 apache2 的 CGI BIN 脚本 我发现此示例位于第 4 页 http www ietf org rfc rfc2387 txt 该链接还显示有关多部分 相关
  • Apache Web 服务器:AH00125:请求超出了 FallbackResource 的 10 个子请求的限制

    当我在 apache 2 4 Web 服务器配置中使用 FallbackResource 时 它显示错误 AH00125 请求超出了 10 个子请求嵌套级别的限制 请帮助解决这个问题 是指定url http localhost bv hos
  • Perl:非阻塞管道 - 只收到一条消息

    几周前我问了一个关于实现非阻塞单父多子管道的问题 mob 巧妙地回答了这个问题here https stackoverflow com questions 52723489 perl one parent many children sin
  • 主机 localhost 不允许连接到此 MySQL 服务器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不小心删除了我的用户表 删除了所有用户 现在每当我尝试访问我的数据库时 它都会说 主机本地主机不允许连接到此 MYSQL 服务器 我试过
  • htaccess“命令”拒绝、允许、拒绝

    我只想允许一个国家 地区访问 但排除该国家 地区内的代理 这就是我所拥有的 为了方便起见缩短版本
  • Apache LOG:子进程 pid xxxx 退出信号分段错误 (11)

    Apache PHP Mysql Linux 注意 子进程 pid 23145 退出信号分段错误 11 tmp 中可能存在 coredump 但 tmp下没有找到任何东西 我怎样才能找到错误 PHP 代码中函数的无限循环导致了此错误
  • Spring MVC http 500错误apache

    上面是我的程序的目录层次结构 我是 Spring 新手 正在学习 MVC 概念 我编写了一个程序 它将输入 名称 输入文本框并打印 Hello name 以下是我的目录结构和我创建的各种文件 web xml
  • 打印 Perl 数组的简单方法? (有一点格式化)

    有没有一个easy如何打印每个元素之间用逗号分隔的 Perl 数组 编写一个 for 循环来做到这一点非常简单 但不太优雅 如果这是有道理的 只需使用join http perldoc perl org functions join htm
  • 如何在 Spring Mvc 项目中设置上下文根

    我在 Tomcat 服务器中使用 Spring MVC 项目 每次运行应用程序时 服务器上下文根都会更改 如何设置固定上下文根 我的项目名称是 DemoApplication 首先部署此上下文根 路径是 http localhost 808
  • 本地“关闭”binmode(STDOUT, ":utf8")

    我的脚本开头有以下块 usr bin perl5 w use strict binmode STDIN utf8 binmode STDOUT utf8 binmode STDERR utf8 在某些子程序中 当存在其他编码 来自远程子程序
  • PHP 中的异步数据库/服务调用:Gearman 与 pthreads

    在我们的 LAMP 站点上 我们遇到一些服务必须多次调用数据库才能提取数据的问题 通常在 PHP 中完成此操作的方式 至少我的经验 是串行的 这显然是低效的 我们可以通过使用缓存和聚合一些查询来缓解一些低效率的问题 但在某些情况下我们仍然需
  • 导入 .pl 文件

    我想知道如何将 Perl 文件导入到脚本中 我尝试了 use require 和 do 但似乎没有什么对我有用 这就是我用 require 做到的 usr bin perl require equations print x1 n 是否可以
  • 如何调试apache虚拟主机配置?

    我的 apache 虚拟主机配置再次出现问题 使用默认配置而不是我的特定配置 问题不在于配置错误 而在于如何解决它 有人有好的建议可以快速解决此类问题吗 更多信息 默认的conf文件是这样的 NameVirtualHost
  • org.apache.http.conn.HttpHostConnectException:在 android 中连接到 http://localhost 被拒绝

    我正在制作一个应用程序 在执行它时将图像上传到服务器并将其数据库更新到android中的服务器 它显示错误 Connection to http localhost refused 还有更多错误 我研究了这个问题 发现不是提供 URL 连接
  • 如何将路径添加到 Apache PATH 变量?

    我在 apache2 的 custom conf 文件中设置了以下内容 SetEnv PATH PATH opt local lib mysql5 bin this is a test 但是它不起作用 当我打电话时 hey shell ex
  • Tomcat 7 - 在哪里设置“系统属性”?

    自从升级到 Tomcat 7 以来 我的 Web 应用程序出现了问题 我的会话将继续null在我登录并尝试执行任何操作 提交请求 后 我读到设置以下内容可能会有所帮助 org apache tomcat util http ServerCo

随机推荐

  • 使用 Pylint 显示错误和警告

    所以我开始使用 Pylint 但由于我使用制表符而不是空格 它给了我警告 也因为一些方法来自基类 它们也是 GalleryUi 的实例 没有 setModel 成员 而它有 QAbstractTableModel作为基类 那么我如何设置 P
  • Solidity:如何将 bytes32 表示为字符串

    这在其他语言中可能很简单 但我不知道如何在 Solidity 中做到这一点 我有一个bytes32像这样0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712 I
  • 如何使用 Eclipse 编译 32 位

    我目前正在我的 64 位 Ubuntu 电脑上用 C 编写一个小程序 默认情况下 eclipse 会编译 64 位架构的程序 因为我想在我的服务器上使用我的小程序 仍然是 32 位 所以我需要能够编译 32 位程序 我怎样才能在日食中做到这
  • 从其他视图拖动时检测视图上的触摸事件

    如果用户触摸视图 A 并拖动到视图 B 的底部 如何检测触摸事件 我想检测视图 B 中的触摸事件 我在视图 B 中添加了触摸监听器 但如果用户最初触摸 A 并将其拖动到 B 上 则不会收到事件 您可以使用下面的代码来实现您的请求 测试视图边
  • 如何在 Pygame 中截取屏幕的特定部分

    有没有办法可以截取 pygame 窗口右半部分的屏幕截图 我正在使用 pygame 制作游戏 我需要拍摄屏幕快照 但不是整个屏幕 只是右半部分 我知道 pygame image save screen screenshot jpg 但这将包
  • 计算地理邻近度的公式

    我需要在我的应用程序中实现地理邻近搜索 但我对使用的正确公式感到非常困惑 经过在网络和 StackOverflow 中的一些搜索 我发现解决方案是 Use the 半正矢公式 Use the Great Circle Distance Fo
  • .net 中的转换:本机 Utf-8 <-> 托管字符串

    我创建了这两种方法来将本机 utf 8 字符串 char 转换为托管字符串 反之亦然 下面的代码完成了这个工作 public IntPtr NativeUtf8FromString string managedString byte buf
  • 找不到版本 GLIBCXX_3.4.11(buildW.mexglx 需要)

    我正在尝试通过 matlab 编译 C ubuntu 项目here 当我在使用 make 命令编译后尝试使用它时 出现以下错误 Invalid MEX file fashionista v0 2 lib bsr buildW mexglx
  • 从输入迭代器创建 C++ std::string 的性能

    我正在做一些非常简单的事情 将整个文本文件从磁盘放入std string 我当前的代码基本上是这样做的 std ifstream f filename return std string std istreambuf iterator
  • 未找到 Android SSL 连接的信任锚

    我正在尝试连接到运行 godaddy 256 位 SSL 证书的 IIS6 机器 但收到错误 java security cert CertPathValidatorException Trust anchor for certificat
  • 使用 PHP 创建 ping 正常运行时间服务

    我有一台可以使用 PHP 的服务器和一个可以从 Internet ping 通的路由器 我想编写一个 PHP 脚本 每 5 分钟向路由器发送一次 ping 结果如下 如果 ping 成功 则不会发生任何事情 如果 ping 失败 则会等待几
  • 当另一个视图控制器显示在 UIPresentationController 之上时,UIPresentationController 会更改大小

    我正在使用 UIPresentationController 展示一个模式视图控制器 我使用以下方法将presentedView 的框架设置为小于containView 的边界 override func frameOfPresentedV
  • mutex.Lock() 如何知道要锁定哪些变量?

    我是个新手 所以请温柔一点 所以我已经在我的一些代码中使用互斥体几周了 我理解其背后的概念 锁定对特定资源的访问 与其交互 读或写 然后再次为其他资源解锁 我使用的互斥体代码主要是复制粘贴调整 代码运行了 但我仍在尝试了解它的内部工作原理
  • 按日期对文件排序

    我在网上找到了这个目录检查代码并稍微修改了一下 这样它就会打印出添加的文件 有一个浮标时不时地向我发送读数 但有时连接会丢失 而不是一个文件 而是发送多个文件 我需要该程序按创建日期对它们进行排序 有没有办法做到这一点 import os
  • 为什么 Java 和 C# 有位移运算符?

    整数乘法 暂时忘记除法 之间的差异是否仍然有利于移位 如果是的话 差异有多大 它看起来只是一个低级优化 即使您想要它 在大多数情况下 C Java 字节码编译器或 jit 不应该捕获它吗 注意 我测试了 C 的编译输出 使用 gmcs Mo
  • 设置 UITextField 的最大字符长度

    如何设置一个文件的最大字符数UITextField当我加载一个iPhone SDK时UIView 虽然UITextField类没有最大长度属性 通过设置文本字段的值来获得此功能相对简单delegate并实现以下委托方法 Objective
  • 在运行时,如何测试属性是否是只读的?

    我正在自动生成代码 根据配置 文本框 dateTimePickers 等 创建 winform 对话框 这些对话框上的控件是从保存的数据集填充的 需要设置和获取各种控制对象 自定义或其他 的属性 Upon opening of form p
  • x86 CPU 有多少条内存屏障指令?

    我发现 x86 CPU 有以下内存屏障指令 mfence lfence and sfence x86 CPU 是否只有这三个内存屏障指令 还是还有更多 sfence 上交所1 和mfence lfence SSE2 是唯一以其内存栅栏 屏障
  • Oracle 基于列值的唯一约束

    我有以下独特的约束 dup Checklist QNum UNIQUE QUESTION NO IS ACTIVE 我试图防止两个问题在活动状态下具有相同的问题编号 IS ACTIVE 值 1 一切看起来都很好 直到我不得不第二次回答一个问
  • 如何持续通知用户 Perl CGI 脚本的进度?

    我的 Apache 服务器的 cgi bin 文件夹中有这个 Perl 脚本 usr bin perl use strict use warnings 1 print Content type text html r n r n print