|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
配布しているCGIスクリプトのダウンロード数をカウントする研究です。
Location でジャンプする、ID別にカウントを行う、といったことを 研究してからだいぶ時間が経ちました。 この間にID別のカウント処理を行うライブラリが完成、 また、自作のCGIプログラムを配布するまでになりました。 そこで、リンククリック解析の研究に立ち戻り、 集大成としてダウンロードカウンターを作成しようと思います。
ダウンロード数を記録するには、ダウンロードのリンクをクリックしたときに カウントを増やす処理を行う必要があります。 そのために、ダウンロードのリンクを直接 lzh ファイルなどの目的のファイルにするのではなく、 CGIプログラムにします。そしてCGIプログラムの中でカウント処理を行ってから、 Loaction ヘッダを使って目的のファイルにジャンプするようにします。 ダウンロードするファイルが複数ある場合は、IDのようなものをCGIスクリプトに渡すことで ジャンプ先を変えることができます。…これは、既に研究済みですね。
数を数えるという処理は得意です (^^ ページビューカウンターから始まった、一定期間のカウントとトータルのカウンタを記録する counters.pl。 このライブラリは複数のもののカウントを行うのに利用できます。 今回も、このライブラリを利用することにしましょう。
#!/usr/bin/perl
require 'getformdata.pl';
require 'counters.pl';
require 'html.pl';
# IDとジャンプ先
%map = (
"plabcounter", "plabcounter100.lzh",
"pvcounter", "pvcounter100.lzh",
"refcounter", "refcounter100.lzh",
"searchword", "searchword100.lzh",
"plabanalyzer", "plabanalyzer100.lzh",
);
# ファイル名など
$fname = "dat_downcounters.cgi";
%form = plab::getformdata();
if ($form{'v'} ne "graph") {
$id = $form{'id'};
if ($id eq "") { $id = "(NULL)"; }
if (! exists($map{$id})) {
print "Content-type: text/html\n\n";
print "ID:$id は存在しません。";
exit;
}
plab::incl_counters($fname, $id, 1, 3, 7);
print "Location: $map{$id}\n\n";
}
else {
print "Content-type: text/html\n\n";
plab::printhtmlheader("ダウンロードカウンター");
print "<div>\n";
print "ダウンロードカウンター \n";
print "</div><br>\n";
$logno = $form{'log'}; # 表示するログ番号
plab::view_counters($fname, 3, $logno, 0);
plab::printhtmlfooter("");
}
当サイトで配布しているCGIプログラムのダウンロード履歴です。
以前行ったリンククリック解析の研究と、ライブラリのおかげで難しいことはなにもありませんでした。 プログラムも短いです。
でもちょっと不満もありますね。 画面に表示されるのが、プログラムの中で使用している各CGIスクリプトを表すIDになっています。 私はこれでも分かりますが、訪問者さんにとってはなんのことか分からない暗号に近いですよね。 これを、分かりやすいように正式名称にしたいです。 それに、クリックしたらそのCGIスクリプトのダウンロードページが開くようにリンクにしたいです。 数をカウントするのに便利な counters.pl ライブラリですが、 そこが問題。今の機能では実現できません。改良の余地ありです。
あともう1つの不満は、counters.pl ライブラリでは過去のカウントを見ることができないこと。 仮にですけど、配布しているCGIスクリプトが将来もっとたくさんの人にダウンロードしてもらえるように なったとしたら、昔はアクセス少なかったけど今はこんなにダウンロードしてくれてる…と感激できるように、 過去のダウンロード履歴も残したいですよね。目的が不順?(^^; でもその辺も改良の余地ありという感じです。
このサイトではダウンロードといえばCGIスクリプトですが、 それ以外でもなにかダウンロードするものを置いているサイトでは役に立つCGIプログラムだと思います。 素材屋さんなどは、人気のある素材がランキングにできたり。 欲しい方おられたら掲示板から連絡してください。 でも素材の場合は「画像をファイルに保存」だからCGIプログラムの呼び出しにならないか…。
|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
| Copyright (c) 'PERL-LABO' All Rights Reserved. リンクフリーです。 |