Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Agarrar";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

a questão não é o tópico Encontre agências semelhantes


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

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



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 filial inteira

Fórum: "Agarrar";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima









Memória: 0.83 MB
Hora: 0.037 c
7-22429
Oleg_swap
2001-09-20 19:13
2002.01.08
início remoto do programa


3-21952
S_King
2001-12-04 10:18
2002.01.08
Determinar o primeiro ID grátis


1-22016
Leviatã
2001-12-13 23:05
2002.01.08
Formulário de aparência


6-22284
Delírio
2001-10-08 16:29
2002.01.08
Como enviar uma mensagem imediatamente para todos os endereços IP


3-21899
Yelchev
2001-12-03 10:26
2002.01.08
Acesso rápido ao ORACLE DB





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese romeno Russa sérvio Slovak esloveno espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol