Да, отдавать буду из чего-нибудь такого, но вот с фактом отдачи
все-таки проблемы.
Во-первых, файлы с большой вероятностью будут забирать download
managers и куки не годятся, во-вторых, ip-адреса могут меняться от
сессии к сессии (поскольку файлы большие, скачивание может затянуться
и адрес клиента поменятся).
Пока остановился на таком варианте: в базе хранится ссылка на файл +
completed byte-ranges (CBR) + ip-адрес + token, а ссылка на файл будет
выглядеть так:
http://www.host.com/dir/token/filename.ext
И тогда при запросе файл будет отдан если:
a) запрашивается кусок файла, не входящий в CBR;
b) запрашивается кусок файла, входящий в CBR, но с того же ip-адреса.
И для обоих вариантов должно выполняться условие, что ссылка на файл
соответствует токену, а токен активный, то есть файл еще не забрали.
Непонятно только, как обрабатывать ситуацию, когда у пользователя
ip-адрес сменился, а качал он каким-нибудь IE и на 50% download
оборвался.
Пока не придумал. К сожалению, потенциально частая ситуация.
Собственно, меня интересует не многообразие способов, а конкретный
алгоритм, который был получен в результате продолжительных
экспериментов на подобном сайте, то есть люди набили все возможные
шишки и нашли таки более или менее оптимальный вариант, на котором и
остановились.
On 9/15/05, Ivan B. Serezhkin <ivan@xxxxxxxxxxxxx> wrote:
>
> Igor Vinokurov wrote:
>
> >Привет.
> >
> >А не назовет ли кто навскидку софт, реализующий pay-per-download
> >схему? Нужно нечто похожее на то, что сделано на allofmp3.com,
> >например.
> >
> >Кстати, не знает ли кто в деталях, какой алгоритм используется ими для
> >определения факта скачивания оплаченного файла?
> >
> >Самый простой вариант - парсим логи, выцепляем все релевантные 200 и
> >206, суммируем, как только сумма скачанных частей равна размеру файла
> >+ 10% считаем, что файл скачан.
> >
> >Как сделать лучше?
> >
> >
> Отдавай файл из фастцигиёвины.
> А ещё лучше из модперлового хандлера.
> Так ты конкретно отрулишь вопрос content-type,
> И самое главное, отрулишь процесс отдачи файла.
> Тоесть когда файл отдалсяЮ, сможешь запихнуть в бд факт отдачи,
> а если файл не отдался целиком, то можешь запомнить ip с которого забирали.
> И отдавать остатки файла только этому ip ...
>
> А вот только что придумал:
> Выдавай куку одноразовую.
> Если файл отдался - просто пиши что файл отдали - списываем деньги.
> А если файл не отдался - то выдавай вторую куку.
> А в бд держи список файл => кука.
> Ну и кука вестимо - guid.
>
--
Zynaps