Сообщение от .Squid
Обертка над функциями движка для Блитца находится в Xors3d.bb.
|
Это и имел в виду. Неужели плохо выразил мысль?
Есть у кого-то надежный скрипт, который может раздавать файлы с поддержкой докачки и желательно в несколько потоков? Гугл не предлагать.
|
Первое, что пришло на ум:
<?
function GetFile($FileName, $MIME = 'application/octet-stream') {
$fsize = filesize($FileName);
$ftime = date('D, d M Y H:i:s T', filemtime($FileName));
$fd = @fopen($FileName, 'rb');
if (isset($_SERVER['HTTP_RANGE'])) {
$range = $_SERVER['HTTP_RANGE'];
$range = str_replace('bytes=', '', $range);
list($range, $end) = explode('-', $range);
if (!empty($range)) fseek($fd, $range);
} else {
$range = 0;
}
if ($range) {
header($_SERVER['SERVER_PROTOCOL'].' 206 Partial Content');
} else {
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
}
header('Content-Disposition: attachment; filename='.basename($FileName));
header('Last-Modified: '.$ftime);
header('Accept-Ranges: bytes');
header('Content-Length: '.($fsize - $range));
if ($range) {
header("Content-Range: bytes $range-".($fsize - 1).'/'.$fsize);
}
header('Content-Type: '.$MIME);
fpassthru($fd);
fclose($fd);
exit;
}
?>
Перед вызовом таймлимит не ставьте на ноль! Серву может стать больно при массовой скачке. Темболее партами отдаём. Лучший вариант 20-45 секунд.
Но надо понимать, что обработка больших файлов php скриптом - это всегда напряг. И никакой скрипт никогда не будет отдавать файлы лучше чем это сделает апач. Как альтернативное решение могу предложить просто хранить файл в папке и написать скрипт, который с выходом новой версии просто будет менять старый файл.
P.S. WEB разработка - дерьмо!