منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "To shabby";
الأرشيف الحالي: 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 فرع كامل

المنتدى: "To shabby";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

الطابق العلوي









الذاكرة: 0.57 ميغابايت
الوقت: 0.028 ج
1-22230
رجل باللون الأحمر
2001-12-15 23:01
2002.01.08
كيفية عرض الرقم التسلسلي في RichEdite للشخصية المحددة في labele!


3-21899
Yelchev
2001-12-03 10:26
2002.01.08
وصول سريع إلى ORACLE DB


1-22243
Gumbert-Gumbert
2001-12-16 22:22
2002.01.08
كيف تأخذ الجذر من الدرجة الثانية في دلفي؟


6-22293
Dark_Dan
2001-10-02 18:09
2002.01.08
يجب أن يموت مآخذ !!!!!!!


1-22018
DelphiG
2001-12-18 01:51
2002.01.08
طباعة النص من مذكرة! لدي شيء خاطئ ....





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch أنجليزي الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский