| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Подсчет количества скачивания |
| Автор: admsasha 28.6.2005, 19:22 | ||
вот скрипт через который скачивается файл. я хочу сделать подсчет скачек. Проблема в том что качальщики типа reget делают несколько потоков и получается код выполняется несколько раз... т.е. счетчик вставить не получится, так как он будет показывать количество потоков при закачке... Как сделать правильный счетчик ? (т.е. имено количество скачек, а не потоков) |
| Автор: sharq 28.6.2005, 20:23 |
| admsasha, можешь сделать так: есть ссылка скачать, при нажатии вызывается счетчик и отображается страница с ссылкой на реальную скачку файла, после чего вызывается скрипт передачи файла. То есть делаешь на раз-два-три. Это первое, что пришло в голову... |
| Автор: admsasha 29.6.2005, 02:02 | ||
Это равносильно счетчику просмотров ссылки... но не загрузки ее... |
| Автор: korob2001 29.6.2005, 03:27 |
| Каждому файлу присваивай уникальный Id, после чего создай программу, которая будет по этому Id находить имя файла и собственно возвращать его, она же будет и подсчитывать кол во скачиваний. Для этого достаточно одного DBM файла, где Id - это ключь, а имя файла значение, можно в нём же и считать или создать второй DBM для подсчёта. Допустим эта программа будет называться counter.pl. Теперь там, где ты указываешь ссылку на файл, просто прописывай такой путь: /cgi-bin/counter.pl?id=74515452697236327 |
| Автор: admsasha 29.6.2005, 03:34 | ||
так то она и работает... проблема как раз в том что, многосессионные закачки, этот URL запрашивают много раз... т.е. встроенный счетчик будет показывать количестно сессий, а не закачек. При односессионной закачки всё будет верно. |
| Автор: korob2001 29.6.2005, 03:37 |
| Т.е. ты хочешь убедиться в том, что юзер дождался полной загрузки файла??? Или я что-то не понял. |
| Автор: admsasha 29.6.2005, 03:42 |
| вообщем то верно.... т.е. мне не обязательно что бы он докачал.... я хочу ограничить скачку файла по количеству раз... для этого и нужен счетчик. причем, с одного компа могут качать не только один раз... т.е. скачал, второй раз можно скачать, счетчик покажет "скачено 2 раза". P.S. на icq не отвечаешь или нельзя, быстрее было бы... хоть смогу объяснить сразу что и как... |
| Автор: Usya 29.6.2005, 07:37 | ||
1) Считывай IP-адрес - он то должен оставаться одним и тем же для нескольких потоков, потом удалишь повторяющиеся в течении заданного интервала времени... 2) Можно с плюшками поработать. В плюшке достаточно хранить количество закачек. При кажной новой закачке обновлять плюшку. Если разница между временем последней и предпоследней модификациями плюшки превышает заданное, увеличить количество закачек на единицу. P.s. Правда с плюшками я не работал, но кажется должно пойти. Единственное, их можно просто удалить с компа и начать качать поновой... |
| Автор: admsasha 29.6.2005, 07:45 | ||
так а если мне надо два раза скачать одно и тоже ? например через 4 часа после первого. Учет по времени не поставить, так как, кто-то три часа качать будет , а кто-то 30 минут.... |
| Автор: korob2001 29.6.2005, 08:44 |
| admsasha Создавай в базе данных таблицу и обновляй поле счётчика при каждом обращении к программе, которая будет посредником между файлом и ссылкой. Вот собственно и всё. |
| Автор: admsasha 29.6.2005, 11:10 | ||||
скачиваю файл через reget, в файле вот что..
т.е. у меня reget запустил 4 сессии... т.е. счетчик будет "4". а надо что бы "1" было.... |
| Автор: admsasha 3.7.2005, 09:33 |
| придумал решение if(exists($ENV{'HTTP_RANGE'})){ // не считать }else{ /// считать } думаю понятно. теперь правильно всё считает... именно сколько закачек, даже при много поточной закачки |