Re: Как трекать скачивание файлов (учитывать траффик по аккаунтам) ?

Maxim Dounin mdounin на mdounin.ru
Пн Дек 27 19:04:56 MSK 2010


Hello!

On Mon, Dec 27, 2010 at 06:35:18PM +0300, Dmitry Dedukhin wrote:

> 27.12.2010 18:28, Maxim Dounin пишет:
> >Hello!
> >
> >On Mon, Dec 27, 2010 at 05:13:46PM +0300, vitaly at rcdesign.ru wrote:
> >
> >>Всех с наступающим!
> >>
> >>Хочется вести учет скачанных файлов/траффика по юзерам. Естественно, доступ
> >>к файлам у каждого юзера
> >>по персонализированным ссылкам. Как сейчас решаются похожие задачи в модных
> >>домах европы? Чтобы избежать
> >>ситуаций, когда юзер скачал килобайт огромного файла, потом плюнул, а ему
> >>все равно гиг насчитали.
> >>
> >>Возможно я отстал от жизни и хочу странного. Тогда буду признателен за более
> >>актуальные примеры.
> >tail -F /path/to/access.log | do_something_with_stats
> >
> >Но при этом не надо забывать, что все получаемые цифры -
> >приблизительные, как минимум с точностью до размера буферов на
> >отправку на вашей стороне.
> 
> А через post_action это никак нельзя сделать?
> В смысле, можно ли в обработчике post_action узнать кол-во отданных байт?

Можно, но это плохая идея.  Даже если забыть о том, что через 
post_action оно будет тупо потреблять больше ресурсов.

У post_action есть приблизительно два существенных недостатка, 
из-за которых я не рекомендую его использовать вообще:

1. Пока выполняется post_action - соответствующее соединение с 
клиентом продолжает оставаться заблокированным.  И если клиент 
послал туда следующий запрос - этот запрос будет ждать, пока 
закончится выполнение post_action.

2. Выполнение post_action - это система костылей и подпорок, 
причём далёкая от стройности.  И шансы, что после очередного 
изменения оно перестанет работать (либо совсем, либо в каких-то 
конкретных ситуациях) - достаточно высоки.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru