我是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”是本地的
答案 0 :(得分:1)
冲洗输出。
最有可能的是,服务器将响应保留在缓冲区中。您可能希望在每fflush(STDOUT)
或print
之后autoflush STDOUT
执行一次。
查看http://www.abiglime.com/webmaster/articles/cgi/032498.htm
【引用】
要使用下面的脚本,您需要 实现一个叫做“非解析”的 您网站上的CGI。通常,网络 服务器将缓冲所有输出 你的CGI程序,直到它的程序 饰面。我们不希望这种情况发生 这里。使用Apache,它非常简单。如果 您的CGI程序的名称开始 用“nph-”它不会被解析。也, 将glob“/ some / path / *”更改为 想要查找文件的路径。
[/报价]