Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];

Вниз

вопрос не в тему   Найти похожие ветки 

 
-=CrazyFish=-   (2001-11-09 16:28) [0]

Народ, хочу на своей страничке поставить счетчики скачиваний файлов. Не подбросите ли какую ни будь доку как это делать?
Заранее благодарен.


 
Oleg Gashev   (2001-11-09 16:46) [1]

В Spylog есть.


 
anod   (2001-11-09 17:16) [2]

Простейщий на перле

#!d:/web/perl/bin/perl -w

use strict;
use CGI;

my $q = CGI->new;
my %counter;

print $q->header(-charset => "cp-1251");
dbmopen (%counter, "counter", 0666);
$counter{"Total"} = 0 if !$counter{"Total"};
print ++$counter{"Total"};
dbmclose (%counter);

А вызыват его так:
Посещений: <!--#include virtual="/cgi-bin/counter.pl"-->


 
Donal   (2001-11-09 17:50) [3]

так ведь речь о счётчиках скачиваний, а не показов страниц
и делается это и правда либо на перле, либо на PHP, либо на любом другом языке серверных скриптов...
суть в том, что вместо ссылки на файл даётся ссылка на скрипт с параметром, который однозначно идентифицирует файл..а скрипт увеличивает счётчик и выдаёт клиенту сам файл...
попробую написать на PHP, потому что самому интересно :-)). если что получится, дам знать :-)


 
Donal   (2001-11-09 18:35) [4]

вот и результат :-) итак - счётчик скачиваний (только учёт) на PHP :

в любом месте сайта пишем файл каталога, где указываются имена файлов, которые можно скачать и через разделитель число их скачиваний. Разделитель может быть любым, главное, чтобы он не мог быть использован в путях к файлу.
пример такого файла (здесь разделителем является пробел):
cat1/subcat1/file1.zip 0
cat2/subcat2/file2.zip 0


<?
$delimeter=" "; //задаём разделитель
$catname="filecat.txt"; //задаём имя файла каталога
$files=File ($catname); //загружаем список файлов
$filelist=explode ($delimeter, $files[$fileno], 2); //читаем параметры
$filelist[1]+=1; //увеличиваем счётчик
$files[$fileno]=implode ($filelist, $delimeter); //объединяем параметры
$file=fopen ($catname, "wt"); //открываем файл на перезапись
for ($i=0; $i < count ($files); $i++)
fputs ($file, trim ($files[$i])."\n"); //пишем туда данные о файлах
fclose ($file); //закрываем файл
header ("Location: {$filelist[0]}"); //перенаправляем браузер на файл
?>


как это использовать :
на странице ставим такую ссылку HREF="download.php?fileno=x"
где вместо х подставляется номер файла в списке (начиная с нуля)
---
этот пример немного недоработан...так, по хорошему ещё надо было бы блокировать файл, чтобы не было конфликтов при одновременном доступе.


 
anod   (2001-11-09 20:35) [5]

Упс, не прочитал....


 
Anatoly Podgoretsky   (2001-11-09 22:48) [6]

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

Без выполнения этих мер предосторожности проблемы гарантированы, особенно при интенсивной работе.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-22245
T2
2001-12-16 07:12
2002.01.08
Gost & best crypt


1-22230
Man In Red
2001-12-15 23:01
2002.01.08
Как в labele отобразить порядковый номер в RichEdite выделенного символа!


1-22202
T2
2001-12-16 07:12
2002.01.08
К вопросу о маленьких исполняемых файлах


14-22333
Nikolay
2001-11-03 20:12
2002.01.08
$$$$$$$$$$$$$$$$$$$$$$$$$$


6-22281
Verona
2001-10-04 12:22
2002.01.08
Отправка сообщений на e-mail





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский