0

私は Perl CGI などの初心者です。Perl コードを使用してサーバー プッシュの概念を試していました。3 秒ごとに 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」をローカルに追加

4

1 に答える 1

1

出力をフラッシュします。

ほとんどの場合、サーバーは応答をバッファーに保持しています。fflush(STDOUT)あなたは毎回printまたは一度後にやりたいかもしれませんautoflush STDOUT

http://www.abiglime.com/webmaster/articles/cgi/032498.htmをご覧ください

[引用]

以下のスクリプトを使用するには、「解析されていない」と呼ばれるCGIをサイトに実装する必要があります。通常、Webサーバーは、プログラムが終了するまで、CGIプログラムからのすべての出力をバッファリングします。ここでそれが起こらないようにします。Apacheを使用すると、非常に簡単です。CGIプログラムの名前が「nph-」で始まる場合、それは解析されません。また、glob "/ some / path/*"をファイルを検索するパスに変更します。

[/引用]

于 2010-05-20T05:47:58.963 に答える