Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Контроль процесса скачивания файла


Автор: sneJok 30.3.2011, 17:12
Всем привет!

Такая задачка: Сделать контроль учета числа пользователей, которые сейчас скачивают файлы с сервера (свой сервер). При этом так, чтобы этот контроль как можно меньше влиял на скорость работы самого сервера на которо находятся файлы.
Сервер: HTTP (Apache2 посл. версия)
Есть возможность: Установить какой-либо другой сервер, ориентированный на скачку по HTTP, если это будет разумно.

Возможно кто-то сталкивался и знает в какую сторону плыть, либо есть какие-либо идеи по этому поводу - был бы очень рад послушать!

Заранее благодарю!

Автор: sneJok 30.3.2011, 17:46
Самому пока пришла только одна мысль: Сделать приложение, которое бы перенаправляло подключение к серверу с файлами. Иначе в звено: пользователь - сервер, внедрить промежуточное звено. Тем самым там можно подсчитать число подключений в данный момент. Но как-то мне кажется это не совсем целесообразно...

Автор: skyboy 30.3.2011, 19:13
чтоб ограничить общее количество скачиваний? можно файрволом резать, если есть признаки, по которым возможно отсеять(заголовок, путь и т.д)
или для ведения статистики? тогда поставить модуль механизма X-SendFile. Но это будет количество запрошенных файлов, а не текущих скачиваний.
или для чего?

Автор: sneJok 30.3.2011, 19:49
Для вывода статистики: Сколько сейчас человек качают файлы с сервера.

Автор: skyboy 30.3.2011, 22:11
если человек начал качать, а потом поставил на паузу?
а если у человека комп вырубился?
как отличать несколько закачек одного и того же файла через один шлюз(в смысле ip одинаковый) от двух потоков на одного клиента?
предлагаю использовать X-SendFile + через некоторое время после начала закачки считать файл закачанным.
то есть логика такова: при каждом обращении перед собственно загрузкой записываем время начала.
для вывода количества выбираем те записи, у которых время начала закачки от текущего отличаются на время, меньшее установленного.

Автор: Endeveit 31.3.2011, 06:43
Цитата(skyboy @  30.3.2011,  23:11 Найти цитируемый пост)
предлагаю использовать X-SendFile + через некоторое время после начала закачки считать файл закачанным.

Можно сделать проще, используя nginx.
У него в настройках можно прописать параметр:
post_action /counter.php?bs=$body_bytes_sent;
После разрыва соединения клиента с сервером, будет дергаться скрипт counter.php.

Автор: sneJok 31.3.2011, 20:33
skyboy, 
Цитата

предлагаю использовать X-SendFile + через некоторое время после начала закачки считать файл закачанным.

Не совсем подходит, нужно как можно точнее определить - сколько сейчас человек качают и сколько поток (про потоки не обязательно, если не ошибаюсь - в Apache можно варьировать это значение).
Данная статистика в дальнейшем нужна для того, чтобы ограничивать доступ к файлам сервера, пока их не скачают другие. (иначе говоря - выставить определенное число возможных скачек одновременно)


Endeveit, 
оо это интересно.
Ни разу не пользовался nginx, но если надо - буду пробовать.
А для Апачи есть что-нибудь подобное?

ЗЫ. Еще такой минивопрос: возможно есть еще какие-либо технологии, которые позволяют увеличить скорость скачки с Http? Например использование какого-нибудь спец. ПО, вместо того же Апачи?

Автор: sneJok 5.4.2011, 18:41
Эх. Придётся разбираться с nginx.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)