HTTP_RANGE サポートを備えた Apache および PHP virtual() 関数によるファイルの送信
-
28-10-2019 - |
質問
PHP関数を使用しています バーチャル() Apache 2.2 によるファイル送信用 (Apache 2.2 よりも高速に動作します) 読み取りファイル())ユーザーのアクセス権限を確認できます。
しかし、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);
}
そのため、WebクライアントはHTTP_RANGEが機能するかのようにファイルをダウンロードしましたが、実際のApacheは次のような同じファイル範囲を常に送信するだけです。クライアントが 4000 ~ 6000 バイトを要求すると、Apache は 0 ~ 2000 バイトなどを送信するため、ファイルが壊れていました。
apache_setenv を使用してそれを行う方法があると思いますが、Google ではそれに関する提案が見つかりません。
解決
Apache の xfilesend モジュールを使用してみてください。
所属していません StackOverflow