Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Стол заказов » Ограничить скорость скачивания файла

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


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

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

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

lutskboy
Эксперт

lutskboy - -

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

Serik
Местный

Serik - -

Да. Да

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

thebeknazar
Юзер

thebeknazar - -

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

sergio.lamborghini
Юзер

sergio.lamborghini - -

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

Serik
Местный

Serik - -

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

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

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

lutskboy
Эксперт

lutskboy - -

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

Serik
Местный

Serik - -

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

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

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

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

Serik
Местный

Serik - -

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

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

ychelovek33
Юзер

ychelovek33 - -

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

dj-avtosh
PHP-developer

dj-avtosh - -

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

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

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

dj-avtosh
PHP-developer

dj-avtosh - -

<?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 - -

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

dj-avtosh
PHP-developer

dj-avtosh - -

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

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

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

Serik
Местный

Serik - -

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

В файле 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 - -

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

наверх