Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.08;
Скачать: CL | DM;

Вниз

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

 
-=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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-21918
SVS
2001-12-04 13:11
2002.01.08
заполнение OleContainer из BlobField


6-22288
atmospheric
2001-10-09 23:49
2002.01.08
WinGate


3-21923
Котелок
2001-11-30 02:16
2002.01.08
Отвлечённый вопрос про оптимизацию.


1-22070
grab
2001-12-18 21:53
2002.01.08
управление шрифтами с помощью POPUP меню


7-22423
Alex_K_xelA
2001-09-21 18:55
2002.01.08
Чтение секторов с CD-ROM