Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчет количества скачивания, Проблема с подсчетом 
:(
    Опции темы
admsasha
Дата 28.6.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Код

...
....
print "Cache-control: no-cache\n";
print "Content-type: application/force-download\n";
print "Content-Length: ".(-s $fullpath)."\n";
print "Content-Disposition: filename=$file \n\n";
open (file, "< $fullpath"); while (<file>){print};close file;


вот скрипт через который скачивается файл. я хочу сделать подсчет скачек.
Проблема в том что качальщики типа reget делают несколько потоков и получается код выполняется несколько раз... т.е. счетчик вставить не получится, так как он будет показывать количество потоков при закачке...

Как сделать правильный счетчик ? (т.е. имено количество скачек, а не потоков)

PM MAIL WWW ICQ Jabber   Вверх
sharq
Дата 28.6.2005, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 2
Всего: 28



admsasha, можешь сделать так: есть ссылка скачать, при нажатии вызывается счетчик и отображается страница с ссылкой на реальную скачку файла, после чего вызывается скрипт передачи файла. То есть делаешь на раз-два-три.
Это первое, что пришло в голову...

Это сообщение отредактировал(а) sharq - 28.6.2005, 22:07


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
admsasha
Дата 29.6.2005, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(sharq @ 29.6.2005, 03:23)
admsasha, можешь сделать так: есть ссылка скачать, при нажатии вызывается счетчик и отображается страница с ссылкой на реальную скачку файла, после чего вызывается скрипт передачи файла.

Это равносильно счетчику просмотров ссылки... но не загрузки ее...
PM MAIL WWW ICQ Jabber   Вверх
korob2001
Дата 29.6.2005, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Каждому файлу присваивай уникальный Id, после чего создай программу, которая будет по этому Id находить имя файла и собственно возвращать его, она же будет и подсчитывать кол во скачиваний. Для этого достаточно одного DBM файла, где Id - это ключь, а имя файла значение, можно в нём же и считать или создать второй DBM для подсчёта.
Допустим эта программа будет называться counter.pl.
Теперь там, где ты указываешь ссылку на файл, просто прописывай такой путь: /cgi-bin/counter.pl?id=74515452697236327

Это сообщение отредактировал(а) korob2001 - 29.6.2005, 03:31


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
admsasha
Дата 29.6.2005, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(korob2001 @ 29.6.2005, 10:27)
Каждому файлу присваивай уникальный Id, после чего создай программу, которая будет по этому Id находить имя файла и собственно возвращать его, она же будет и подсчитывать кол во скачиваний. Для этого достаточно одного DBM файла, где Id - это ключь, а имя файла значение, можно в нём же и считать или создать второй DBM для подсчёта.


так то она и работает... проблема как раз в том что, многосессионные закачки, этот URL запрашивают много раз... т.е. встроенный счетчик будет показывать количестно сессий, а не закачек. При односессионной закачки всё будет верно.
PM MAIL WWW ICQ Jabber   Вверх
korob2001
Дата 29.6.2005, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



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


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
admsasha
Дата 29.6.2005, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



вообщем то верно....

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

P.S. на icq не отвечаешь или нельзя, быстрее было бы... хоть смогу объяснить сразу что и как...
PM MAIL WWW ICQ Jabber   Вверх
Usya
Дата 29.6.2005, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Цитата
т.е. счетчик вставить не получится, так как он будет показывать количество потоков при закачке...

1) Считывай IP-адрес - он то должен оставаться одним и тем же для нескольких потоков, потом удалишь повторяющиеся в течении заданного интервала времени...
2) Можно с плюшками поработать. В плюшке достаточно хранить количество закачек. При кажной новой закачке обновлять плюшку. Если разница между временем последней и предпоследней модификациями плюшки превышает заданное, увеличить количество закачек на единицу.

P.s. Правда с плюшками я не работал, но кажется должно пойти. Единственное, их можно просто удалить с компа и начать качать поновой...
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
admsasha
Дата 29.6.2005, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Цитата(Usya @ 29.6.2005, 14:37)
1) Считывай IP-адрес - он то должен оставаться одним и тем же для нескольких потоков, потом удалишь повторяющиеся в течении заданного интервала времени...


так а если мне надо два раза скачать одно и тоже ? например через 4 часа после первого. Учет по времени не поставить, так как, кто-то три часа качать будет , а кто-то 30 минут....
PM MAIL WWW ICQ Jabber   Вверх
korob2001
Дата 29.6.2005, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



admsasha
Создавай в базе данных таблицу и обновляй поле счётчика при каждом обращении к программе, которая будет посредником между файлом и ссылкой. Вот собственно и всё.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
admsasha
Дата 29.6.2005, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Код

    my $file="background1024.rar";
    my $fullpath="unload/$file";

    open (file, ">> unload/111.txt");
        print file "download";
        print file " \n";
    close file;

    print "Cache-control: no-cache\n";
    print "Content-type:  application/force-download\n";
    print "Content-Length: ".(-s $fullpath)."\n";
    print "Content-Disposition: filename=$file \n\n";
    open (file, "< $fullpath"); while (<file>){print};close file;


скачиваю файл через reget, в файле вот что..
Цитата
download
download
download
download


т.е. у меня reget запустил 4 сессии... т.е. счетчик будет "4". а надо что бы "1" было....



PM MAIL WWW ICQ Jabber   Вверх
admsasha
Дата 3.7.2005, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



придумал решение

if(exists($ENV{'HTTP_RANGE'})){
// не считать
}else{
/// считать
}

думаю понятно. теперь правильно всё считает... именно сколько закачек, даже при много поточной закачки
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.