如何在服务器推送Perl CGI程序中发送多个图像?

时间:2010-05-20 05:38:21

标签: perl apache2 cgi server-push

我是Perl CGI等的初学者。我正在用一段Perl代码试验服务器推送概念。它应该每三秒钟向客户端发送一个jpeg图像。

不幸的是,似乎没有任何工作。有人可以帮助确定问题吗?

以下是代码:

use strict;
# turn off io buffering
$|=1;
print "Content-type: multipart/x-mixed-replace;";
print "boundary=magicalboundarystring\n\n";
print "--magicalboundarystring\n";

#list the jpg images
my(@file_list) = glob "*.jpg";
my($file) = "";

foreach $file(@file_list ) 
{
     open FILE,">", $file or die "Cannot open file $file: $!";
     print "Content-type: image/jpeg\n\n";

    while ( <FILE> )
    { 
        print "$_";
    }

    close FILE;
     print "\n--magicalboundarystring\n";
     sleep 3;
    next;

}

编辑:添加关闭i / o缓冲,添加“use strict”和“@file_list”,“$ file”是本地的

1 个答案:

答案 0 :(得分:1)

冲洗输出。

最有可能的是,服务器将响应保留在缓冲区中。您可能希望在每fflush(STDOUT)print之后autoflush STDOUT执行一次。

查看http://www.abiglime.com/webmaster/articles/cgi/032498.htm

【引用】

  

要使用下面的脚本,您需要   实现一个叫做“非解析”的   您网站上的CGI。通常,网络   服务器将缓冲所有输出   你的CGI程序,直到它的程序   饰面。我们不希望这种情况发生   这里。使用Apache,它非常简单。如果   您的CGI程序的名称开始   用“nph-”它不会被解析。也,   将glob“/ some / path / *”更改为   想要查找文件的路径。

[/报价]