Тема: ENGINE::ERROR
Показать сообщение отдельно
Старый 18.11.2010, 21:08   #5
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений
(для 6,854 пользователей)
Ответ: ENGINE::ERROR

Сообщение от .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 разработка - дерьмо!
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Phantom (26.11.2010), Reks888 (27.11.2010), Tadeus (26.11.2010)