2011-02-04 34 views
4

私はPHPの関数virtual()を使ってApache 2.2(これはreadfile()より速く動作します)でファイルを送信しています。ApacheとPHPによるファイルの送信HTTP_RANGEをサポートするvirtual()関数

しかし、HTTP_RANGEを使用して継続的なダウンロードサポートを追加する方法はありますか?

私はこの

if(isset($_SERVER['HTTP_RANGE'])) { 
     list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']); 
     str_replace($range, "-", $range); 
     $size2=$size-1; 
     $new_length=$size-$range; 
     header("HTTP/1.1 206 Partial Content"); 
     header("Content-Length: $new_length"); 
     header("Content-Range: bytes $range$size2/$size"); 
     apache_setenv('HTTP_RANGE', $_SERVER['HTTP_RANGE']); 
    } else { 
     $size2=$size-1; 
     header("Content-Range: bytes 0-$size2/$size"); 
     header("Content-Length: ".$size); 
} 

のようなものを試してみましたので、ウェブクライアントがHTTP_RANGEが動作するかどうかのようなファイルをダウンロードしましたが、本当のApacheに同じように常に同じファイルの範囲を送信します。クライアントは頼めば4000 - 6000バイト、Apacheは0〜2000などを送信するため、ファイルが壊れていました。

私はapache_setenvを使用してそれを行うにはいくつかの方法があると思いますが、Googleではそれについてのいかなる提案も見つけることができません。

+0

また、サーバーとクライアントからのトランザクション中に送信される実際のHTTPヘッダーを送信することもできます。 – karlcow

答えて

3

Apache用にxfilesendモジュールを使用してください。

関連する問題