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

Discussion in 'PHP' started by mastaadon, 8 Apr 2009.

  1. mastaadon

    mastaadon New Member

    Joined:
    26 Mar 2009
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    У меня проблемы с хостером. Мой счет был приостановлен из за того что файлы с скачиваемые с сайта загружают (сервер или канал так неразборчиво объяснили). В общем мне предлагаются установить 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.

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

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

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    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%D1%8C+%D0%BE%D1%82%D0%B4%D0%B0%D1%87%D0%B8+%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2&spell=1

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

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Чтобы ограничить скорость скачивания нужно сделать ограничения в самом скрипте через который ведется скачивание. Например:

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

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Хостер какой-то колхозный, если такую фигню пишет.


    ну как вариант:
    PHP:
    <?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 (
    $speedsleep(1);
    }

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



    // опередили =\
     
    1 person likes this.
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    ntldr
    fgets() для бинарных файлов крайне не желательна )
     
    1 person likes this.
  6. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    да я просто принцип хотел показать.
     
  7. mastaadon

    mastaadon New Member

    Joined:
    26 Mar 2009
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Вся беда в том что ссылки на файлы прямые и лежат на разных страницах сайта. В основном это мультимедийные файлы и объемы довольно большие. Одновременное скачивание нескольких файлов посетителями сайта (особенно с европы) с большими скоростями видимо забивает канал хостера.

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

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

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

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

    Кто что посоветует?
     
  8. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    если ссылки раскиданы по разным местам, нужно сделать правило мод реврайта, чтобы файлы с заданными расширениями к примеру /download/lol.rar автоматически реврайтился на /limit.php?file=/download/lol.rar, где limit.php - скрипт, выдающий файл с ограничением по скорости.
     
  9. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Стоп.
    Ты превысил ограничения в 5Тб или нет?
    Если нет, то требуй включить. Проблемы на их стороне, а они просто пытаются переложить их на тебя.
     
  10. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    хочешь подскажу 100GB/75TB за такие же деньги?) С рутом.
     
  11. mastaadon

    mastaadon New Member

    Joined:
    26 Mar 2009
    Messages:
    32
    Likes Received:
    0
    Reputations:
    0
    Насколько я помню лимит трафика никогда не превышался. На данный момент не могу знать потому что доступа в контрольную панель тоже нет. Идея с 100GB/75TB мне интересна, если не трудно дайте ссылку.
     
  12. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    keyweb.ru

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

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    nerezus +1 у меня там VPS.
    за 22 бакса 80гигов места 16ТБ трафф, 1,5гига оперативки и 60% от проца. + тех поддержка. :)