Ограничение скорости скачивания

Тема в разделе "PHP", создана пользователем VictorVi, 30 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. VictorVi

    VictorVi Прохожие

    Как сделать на пхп ограничение скорости скачивания? Например ограничить поток на 10 кб и не дать пользвоателю качать в 2 потока. Нутром понимаю, что нужно весь трафик через пхп скрипт пропустить и как-то его считать. Но готовых примеров не нашел. Может кто это уже реализовывал?
     
  2. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Код:
    $speed = 1024 * 64;
    $f = 'imya_faila';
    while( !feof($f) ) {
      echo fread($f, $speed);
      flush();
      sleep(1);
    }
    Таким образом можно ограничить скорость до 64кб/сек
    А к-во потоков писать в сессию (или базу) и проверять не превышено ли значение перед отдачей файла.
    Для того что бы перенаправлять скачку на пхп скрипт можно использовать модреврайт.
    А по хорошему такие вещи должен делать модуль веб-сервера.
    +незабудь про правильные хеадеры и про range =)

    Твой вопрос гуглиться за минуту ;)
     
  3. Darkmind

    Darkmind SNMP maniac

    Регистр.:
    31 май 2006
    Сообщения:
    184
    Симпатии:
    76
    Простой пример:
    PHP:
    $source_file         'test-file.zip';
    $destination_file     'your-download-name.zip';
    $rate                 20.5// kb/s

    header('Cache-control: private');
    header('Content-Type: application/octet-stream'); 
    header('Content-Length: '.filesize($source_file));
    header('Content-Disposition: filename='.$destination_file);
     
    flush();    

    $file fopen($source_file"r");    
    while(!
    feof($file)) {
        print 
    fread($fileround($rate 1024));    
        
    flush();
        
    sleep(1);    
    }    
     
    fclose($file);
    Более полные и грамотные варианты можно искать на phpclasses.org, например:
    Перейти по ссылке
     
  4. apollonx

    apollonx Писатель

    Регистр.:
    12 май 2008
    Сообщения:
    4
    Симпатии:
    1
    Можно динамически генерить ссылки для скачивания, размещая скачиваемый файл в только что созданной директории, и генерить в эту директорию файл .htaccess с необходимыми настройками для mod_bandwidth. И давай пользователю такую ссылку. По истечении определенного времени директорию удалять через crontab.
     
  5. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
  6. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    Подобные вещи надо решать средствами сервера, а не костылями.
     
  7. VictorVi

    VictorVi Прохожие

    Средствами сервера - геморно, особено когда нет "прямого" доступа к онному. Проще на пхп.

    Оптимальный вариант имхо от пхпкласс. Всем спасио за ответы =)
     
  8. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    Оптимально - не нагружать сервер бессмысленной работой и не растрачивать его память.
     
  9. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    С SiMM согласен — лимитировать скорость закачки PHP не должен.
     
  10. ripanet

    ripanet Создатель

    Регистр.:
    1 дек 2009
    Сообщения:
    12
    Симпатии:
    1
    A в Настройка системы->Настройка загрузки файлов на сервер есть Максимальная скорость скачивания (kb/s)
    ограничений на скорость скачивания файлов
     
Статус темы:
Закрыта.