PDA

Просмотр полной версии : Как с помошью скрипта PHP ограничить скорость загрузки файла


mastaadon
08.04.2009, 23:34
У меня проблемы с хостером. Мой счет был приостановлен из за того что файлы с скачиваемые с сайта загружают (сервер или канал так неразборчиво объяснили). В общем мне предлагаются установить PHP скрипт который будет регулировать скорость загрузки файлов.

You need to limit the downloading speed for your files. You can do it over the some php script. If you need more info of it, please contact some web-developer and ask about it.

Может кто посоветует что либо по этому поводу. Было бы прекрасно если бы мне не пришлось заниматься каждым файлом индивидуально ( в смысле наложить какие то ограничения на папку где хранятся файлы).

Спасибо заранее.

Zitt
08.04.2009, 23:57
http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=qry&ei=aQHdSbXvD9uJsAb7vM2oDA&sa=X&oi=spell&resnum=1&ct=result&cd=1&q=php+%D1%81%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D 1%8C+%D0%BE%D1%82%D0%B4%D0%B0%D1%87%D0%B8+%D1%84%D 0%B0%D0%B9%D0%BB%D0%BE%D0%B2&spell=1

первые три ссылки...

ntldr
08.04.2009, 23:57
Чтобы ограничить скорость скачивания нужно сделать ограничения в самом скрипте через который ведется скачивание. Например:

$f=fopen("DownloadMe","r");
while(!feof($f))
{
echo fgets($f,1024);
(тут задкржка, например sleep(0.1); )
}

.:EnoT:.
09.04.2009, 00:01
Хостер какой-то колхозный, если такую фигню пишет.


ну как вариант:

<?php

$openFile = fopen('file.zip', 'rb');
$speed = 1024; // kb/s

while(!feof($openFile) && !connection_status()) {
echo fread($openFile, ($speed ? $speed : 1024));
flush();
ob_flush();
if ($speed) sleep(1);
}

?>

Вот такое нехитрое органичение скорости скачивания. Соответственно если $speed установить в 0, ограничения не будет



// опередили =\

.:EnoT:.
09.04.2009, 00:03
ntldr
fgets() для бинарных файлов крайне не желательна )

ntldr
09.04.2009, 00:05
ntldr
fgets() для бинарных файлов крайне не желательна )
да я просто принцип хотел показать.

mastaadon
09.04.2009, 00:30
Вся беда в том что ссылки на файлы прямые и лежат на разных страницах сайта. В основном это мультимедийные файлы и объемы довольно большие. Одновременное скачивание нескольких файлов посетителями сайта (особенно с европы) с большими скоростями видимо забивает канал хостера.

Сам хостер конечно дешевый и соответственно хреновый. (300 GB/5TB = 11.95$ в месяц).

Если нет возможности ограничить скорость скачивания всех файлов в определенной папке то это значить нужно переписать все страницы где даны ссылки.

Может быть устроил вариант запретить с одного IP одновременное скачивание более чем одного файла.

Я стою перед фактом сменить хостера ( а это пере залить как минимум 200 ГБ) или найти решение проблемы.

Кто что посоветует?

ntldr
09.04.2009, 00:59
если ссылки раскиданы по разным местам, нужно сделать правило мод реврайта, чтобы файлы с заданными расширениями к примеру /download/lol.rar автоматически реврайтился на /limit.php?file=/download/lol.rar, где limit.php - скрипт, выдающий файл с ограничением по скорости.

nerezus
09.04.2009, 01:16
Сам хостер конечно дешевый и соответственно хреновый. (300 GB/5TB = 11.95$ в месяц). Стоп.
Ты превысил ограничения в 5Тб или нет?
Если нет, то требуй включить. Проблемы на их стороне, а они просто пытаются переложить их на тебя.

nerezus
09.04.2009, 01:17
(300 GB/5TB = 11.95$ в месяц). хочешь подскажу 100GB/75TB за такие же деньги?) С рутом.

mastaadon
09.04.2009, 01:33
Насколько я помню лимит трафика никогда не превышался. На данный момент не могу знать потому что доступа в контрольную панель тоже нет. Идея с 100GB/75TB мне интересна, если не трудно дайте ссылку.

nerezus
09.04.2009, 02:46
keyweb.ru

Проблема с трафиком - их проблема. Ты не превысил лимит, но они под предлогом "забивается канал" хотят, чтобы ты его не израсходовал. Либо админ уволился.
Оба случая говорят о качестве шарашки.

blaga
09.04.2009, 04:50
nerezus +1 у меня там VPS.
за 22 бакса 80гигов места 16ТБ трафф, 1,5гига оперативки и 60% от проца. + тех поддержка. :)