За последние 24 часа нас посетили 62085 программистов и 1788 роботов. Сейчас ищут 829 программистов ...

Отдача файлов через PHP и sleep

Тема в разделе "Прочие вопросы по PHP", создана пользователем krow7, 4 сен 2011.

  1. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    Нашел простенькую функцию для отдачи файлов:
    PHP:
    1. <?php
    2. function file_download($filename, $mimetype='application/octet-stream') {
    3.   if (file_exists($filename)) {
    4.     header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
    5.     header('Content-Type: ' . $mimetype);
    6.     header('Last-Modified: ' . gmdate('r', filemtime($filename)));
    7.     header('ETag: ' . sprintf('%x-%x-%x', fileinode($filename), filesize($filename), filemtime($filename)));
    8.     header('Content-Length: ' . (filesize($filename)));
    9.     header('Connection: close');
    10.     header('Content-Disposition: attachment; filename="' . basename($filename) . '";');
    11. // Открываем искомый файл
    12.     $f=fopen($filename, 'r');
    13.     while(!feof($f)) {
    14. // Читаем килобайтный блок, отдаем его в вывод и сбрасываем в буфер
    15.       sleep(1); // вот он!!!
    16.       echo fread($f, 1024);
    17.       flush();
    18.     }
    19. // Закрываем файл
    20.     fclose($f);
    21.   } else {
    22.     header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
    23.     header('Status: 404 Not Found');
    24.   }
    25.   exit;
    26. }
    вставил sleep(1) (выделено), в надежде, что будет выдаваться с определенной скоростью. Ан-нет, файл лежит на локалхосте, так что "скачивает" моментально. Почему скрипт не засыпает?
     
  2. alive342

    alive342 Активный пользователь

    С нами с:
    21 апр 2011
    Сообщения:
    137
    Симпатии:
    0
    Адрес:
    Российская Федерация
    организуй ограничение скорости отдачи на уровне апача и не мучайся
     
  3. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    не катит, потому что для этого скрипта надо так, для другого понадобится так.
    хочу средствами php, если возможно.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хз. на вид - должен слипаться.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может он у тебя закешился в браузере?
     
  6. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    да хз)
    нашел другой пример, который воркает)