Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Стол заказов » Ограничить скорость скачивания файла

Ограничить скорость скачивания файла


 Serik    28.01.2014    Стол заказов    2613    15 комментариев

Дано: файлы-аттачи в определённом допполе (обычно гига по 1.5 - 2 каждый)
Нужно: сделать возможность при редактирование в админке ограничить скорость скачивания именно с этого допполя до определённой скорости, скажем 500кбс. В идеале сделать выбор на 3-5 ограничителей, скажем 100 кбс, 300, 500. Но устроит и без выбора.

15 комментариев

lutskboy
Эксперт

lutskboy - 28 января 2014 16:40 -

в этом доп поле вписываете ссылку на файл? Этот файл на вашем сервере?

Serik
Местный

Serik - 28 января 2014 17:14 -

Да. Да

СПАСИБО надо тыкать в кнопку!

thebeknazar
Юзер

thebeknazar - 28 января 2014 17:20 -

в настройках системы или группы же можно вроде такое задавать

sergio.lamborghini
Юзер

sergio.lamborghini - 28 января 2014 17:24 -

В настройках движка есть такая фича. Сначала изучите настройки, потом уже задавайте более чем ламерские вопросы.

Serik
Местный

Serik - 28 января 2014 18:15 -

Сначала изучите настройки, а потом давайте ламерские советы. Мне не нужно группы настраивать, мне нужно ограничить скорость скачивания В ОТДЕЛЬНО ВЗЯТОМ ДОППОЛЕ,

При этом остальные допполя с сылками не нужно ограничивать - читайте ТЗ
ограничить скорость скачивания именно с этого допполя

СПАСИБО надо тыкать в кнопку!

lutskboy
Эксперт

lutskboy - 28 января 2014 17:27 -

да. есть. но тут файл через доп поле как ссылка вставляется.
если что пишите. попробую реализовать.

Serik
Местный

Serik - 28 января 2014 18:38 -

ув. Сандер подал хорошую мысль...

Можно не привязывать ограничение именно к допполю, а сделать его исходя из размера файла. Например до 200 mb без ограничений, от 200 до 1000 ограничить в 1000кбс, а свыше 500 ограничить в 500кбс

Сам он пока занят, но и мне не горит - кто сможет цену в личку.

СПАСИБО надо тыкать в кнопку!

Serik
Местный

Serik - 28 января 2014 19:00 -

Вопрос решен - 3 строчки кода )))

СПАСИБО надо тыкать в кнопку!

ychelovek33
Юзер

ychelovek33 - 28 января 2014 23:30 -

Serik,
Нам очень интересны эти 3 строчки!!!

dj-avtosh
PHP-developer

dj-avtosh - 29 января 2014 06:28 -

Serik вряд ли что скажет, слишком давно его знаю :D

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 29 января 2014 06:31 -

<?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);
}

?>

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

cybernatic
Эксперт

cybernatic - 29 января 2014 10:22 -

Отдавать по кусочкам большие файлы не комильфо, хостер будет материться, а если у Вас будет стоять веб-сервер то лучше юзать nginx там и модули есть соответствующие

dj-avtosh
PHP-developer

dj-avtosh - 29 января 2014 10:33 -

ну конечно fgets не распространяется на бинарные файлы, это было так для примера.
Ну если есть веб-сервер - то вообще зачем эта тема?)

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Serik
Местный

Serik - 29 января 2014 14:53 -

Нет почему же - мне не жалко )) И хотя я побашлял Сандеру на чай с ватрушками энную сумму код всё же вот:

В файле engine/classes/download.class.php

После строки
$file_size = @filesize( $path );

Вставить:
$filem_size = $file_size/1024/1024;
if($filem_size>700) $max_speed = 100;
elseif($filem_size>300) $max_speed = 300;


Где значение переменной $max_speed указвается в kb/s.
Соответственно если файл более 300mb то скорость 300 кбс, если 700 mb и более - 100 кбс

СПАСИБО надо тыкать в кнопку!

Maxic
Юзер

Maxic - 29 января 2014 20:34 -

Отдавать большие файлы через php - слишком дорогого стоит. Для таких целей ставят реверс прокси (nginx) - а там уже можно настроить как хочешь.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх