Отправка файлов с помощью Apache и PHP virtual () с поддержкой HTTP_RANGE - PullRequest
4 голосов
/ 04 февраля 2011

Я использую функцию PHP virtual () для отправки файлов через Apache 2.2 (она работает быстрее, чем readfile () ), и я могу проверить права доступа пользователя.

Но есть ли способ добавить поддержку непрерывной загрузки с 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 никаких предложений по этому поводу.

1 Ответ

3 голосов
/ 07 февраля 2011

Попробуйте использовать модуль xfilesend для Apache.

...