Senden von Dateien per Apache und PHP virtual () mit HTTP_RANGE-Unterstützung
-
28-10-2019 - |
Frage
Ich verwende die PHP-Funktion virtual () zum Senden von Dateien mit Apache 2.2 (sie funktioniert schneller als
Aber gibt es eine Möglichkeit, mit HTTP_RANGE kontinuierliche Download-Unterstützung hinzuzufügen?
Ich habe solche Dinge ausprobiert
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);
}
Der Web-Client hat also Dateien heruntergeladen, als ob HTTP_RANGE funktioniert, aber in echtem Apache sendet er immer die gleichen Dateibereiche wie: Wenn der Client 4000-6000 Bytes fragt, sendet Apache 0-2000 und so weiter, so dass Dateien beschädigt wurden.
Ich denke, dass es eine Möglichkeit gibt, dies mit apache_setenv zu tun, kann aber in Google keinen Vorschlag dazu finden.
Lösung
Versuchen Sie, das xfilesend-Modul für Apache zu verwenden.