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ではそれについてのいかなる提案も見つけることができません。
また、サーバーとクライアントからのトランザクション中に送信される実際のHTTPヘッダーを送信することもできます。 – karlcow