parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Вы неправильно мыслите

Sanja v.2 23.01.2008 11:30

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

Например, я хочу скачать у вас три файла. Я могу качать их через медленный gprs и скачка будет идти долго - следить за мной для сервера будет накладно. Ваш сервер может перезагрузиться по тысяче причин. Коннект на стороне клиента может прерваться.

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

Самый гуманный и надёжный способ, щадащий сервер:

- вы генерируете для каждого запрошенного документа уникальный id и срок его действия (например, now + одни сутки)
- пишете их в базу
- из имеющихся в базе записей перегенерируете Апачевский rewrite map файл.
- выдать пользователю вместо файла download01adfaiou93ihlkhsdfg.html document.pdf становится задачей Apache. Он под это дело оптимизирован и лишних серверных ресурсов не выжрет. Заодно вы сможете сделать доп. настройку силами mod_bandwidth и прочих.
- редко какой пользователь скачает файл по ссылке более одного раза. Если ему так уж потребуется - скачает по-новой. Если хочет - использует многопоточный download manager. Пользователь не испытает дискомфорта от непонятных ему запретов.

Не привязывайте ID файла к IP пользователя, привязывайте к его логину на сайте. Да, 1% ваших посетителей будут давать свои уникальные ссылки по аське приятелям - но ущерб от них минимален. Зато корпоративные пользователи за балансирующими проксями на вас не будут в обиде. Им невдомёк, что их запросы идут с разных IP - зачастую они вообще слабо понимают, как устроено их подключение к интернету.