HTTP_RANGE サポートを備えた Apache および PHP virtual() 関数によるファイルの送信

StackOverflow https://stackoverflow.com/questions/4898383

質問

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 モジュールを使用してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top