Envio de arquivos por Apache e função PHP virtual () com suporte HTTP_RANGE
-
28-10-2019 - |
Pergunta
Estou usando a função PHP virtual () para enviar arquivos pelo Apache 2.2 (funciona mais rápido que
Mas existe alguma maneira de adicionar suporte de download contínuo, com HTTP_RANGE?
Eu tentei coisas assim
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);
}
Assim, os arquivos do cliente web foram baixados como se o HTTP_RANGE funcionasse, mas no Apache real apenas envia sempre os mesmos intervalos de arquivo como: se o cliente pede 4000-6000 bytes, o Apache envia 0-2000 e etc, então os arquivos foram corrompidos.
Acho que existe uma maneira de fazer isso usando apache_setenv, mas não consigo encontrar no Google nenhuma sugestão sobre isso.
Solução
Tente usar o módulo xfilesend para Apache.