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

Статус
В этой теме нельзя размещать новые ответы.
V

VictorVi

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

Твой вопрос гуглиться за минуту ;)
 
Простой пример:
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($file, round($rate * 1024));    
    flush();
    sleep(1);    
}    
 
fclose($file);

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

Можно динамически генерить ссылки для скачивания, размещая скачиваемый файл в только что созданной директории, и генерить в эту директорию файл .htaccess с необходимыми настройками для mod_bandwidth. И давай пользователю такую ссылку. По истечении определенного времени директорию удалять через crontab.
 
Подобные вещи надо решать средствами сервера, а не костылями.
 
Средствами сервера - геморно, особено когда нет "прямого" доступа к онному. Проще на пхп.

Оптимальный вариант имхо от пхпкласс. Всем спасио за ответы =)
 
Оптимально - не нагружать сервер бессмысленной работой и не растрачивать его память.
 
С SiMM согласен — лимитировать скорость закачки PHP не должен.
 
A в Настройка системы->Настройка загрузки файлов на сервер есть Максимальная скорость скачивания (kb/s)
ограничений на скорость скачивания файлов
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху