Форум: "Потрепаться";
Текущий архив: 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.008 c