WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:HP滞在時間計測CGI

0:[投稿] アクア [MAIL] [2003/04/07 01:25 ][環境:IE6 WIN2000 WIN2000サーバ、IIS、CGI、perl]

始めまして、今HP滞在時間を計るCGIを作ろうとしてるのですが可能でしょうか?
自分で調べたのですがやはり解らないので知ってる方居ましたらお教えください。
自分が見つけたのは http://www006.upp.so-net.ne.jp/funa/
のアクセスログCGIに付いてる機能でした。

まずどのようにすれば滞在時間を計れるのか知りたいのでお願いいたします。


1:[回答] ・・ [2003/04/07 11:11 ]

詳しいやり方は分かりませんが、
フレーム分割(片方は隠し)と、
onLoad、onUnloadあたりを使用するのでしょうか。
両イベントで、時間を取得し、計算するとか。


2:[回答] アクア [2003/04/08 04:58 ]

回答有難う御座います。
その方法だと

$ENV{'TZ'} = "JST-9";
$times = time;
($min,$hour,$mday,$mon,$year,$wday) = (localtime($times))[1..6];
@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

# 日時のフォーマット
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);

このよう感じで時間を取得し
ページを開いた時(onLoad)閉じた時(onUnload)に記入するって感じですよね??
でもonUnloadだと戻る・リロード時にも起動するのでは?
それとも戻る・リロードなどを封じる方法があるのでしょうか?
見た事はありますが良く解らないので勉強してみます。

引き続き良い方法思い付いたり知っている方居ましたら
お手数ですがお教え下さい。

・・様へ
>時間を取得し計算するとか。
これを計算する方法って有るのですか?
もしかして手動計算??
ちょっと疑問に思ったので聞いてみましたが気にしないで下さい。
もしそのような方法有るのでしたら教えて頂きたいです。


3:[回答] ・・ [2003/04/08 10:59 ]

「戻る」なら、そのページに滞在していない事になるので、onUnloadが起動して問題ないのでは。

「リロード」は考慮してませんでした(すいません)

onLoad使用にしたのは、スクリプトで時間を取得する目的で使用するつもりでしたが。CGIで対象ページを作成、時間を書き込むなら、onLoadは不要です。

但しスクリプトで時間測定を行うと、HP滞在中にPC時間を変更されると狂いますが・・。(滅多にないと思うが)


4:[回答] ・・ [2003/04/08 15:13 ]

時間について
スクリプトで良ければ、以下のようなものが有ります。

OpenSpace 古籏氏のHPより
http://www.openspc2.org/JavaScript/ref/index.html
日付の所

1970年1月1日午前00:00:00から日付までのミリ秒を求めます
d = Date.parse("1999/7/28:11:23:58")

スクリプトなのでクリティカルなシステムでは使用できないですけど。(課金システムとか)

perlは詳しくないので・・・。


5:[回答] ひじ [2003/04/08 20:41 ]

HTTPはUAにHTML文書等を送信してしまったら接続を切るので、サーバ側から閲覧時間を正確に測る方法はありません。

それを無理に測ろうとするなら、 >>1 のようにonunloadイベントを利用するのが一つの方法です。ただし、JavaScript offなら使えないし、そうでなくても、ブラウザの不正終了などの対処も考える必要があります。

アクセス解析ソフトの中には、サイト滞在時間を表示できるものがあります。
これらのソフトは、アクセスログを見て、同じIPアドレスからの最初のアクセスと最後のアクセスの間の時間をサイト滞在時間としているようです。


6:[回答] アクア [2003/04/08 22:24 ]

・・様の教えてくれたサイトを少し勉強させて頂きますね。

ひじ様の言ってるように無理に取るならイベントを使う必要があるようですね。

>アクセス解析ソフトの中には、サイト滞在時間を表示できるものがあります。
>これらのソフトは、アクセスログを見て、同じIPアドレスからの最初のアクセスと最後のアクセスの間の時間をサイト滞在時間としているようです。
これの解釈は1.html開いた時間 2.htmlを開いた時間の間を滞在時間として計算するって事でしょうか?

間違ってたらごめんなさい・・・


7:[回答] gun [2003/04/09 09:48 ]

業務用なら、ユーザに
"ログイン&ログオフ"を徹底させる運用
にして、ログイン&ログオフの日時をサーバ側で計測して差分を
割り出すのが現実的な感があります。

そして、ログイン後に**分間WEBサーバに対してリクエストが無い
場合は自動的にログオフさせてしまうのはいかがでしょうか?
(仕組みは考えたのですが、どうやって実現すればいいのかを
思いつきませんでした。すみません)


8:[回答] Malic [2003/04/09 14:20 ]

まず対象ページ数、使用目的を明らかにしたほうが良いようです。

1. 対象ページ数
    1〜数ページの、各ページごとの滞在時間を知りたい
         →時間部分はスクリプトかCGIで作成、onUnloadは使用
    アクア氏作成のHPの全体の滞在時間が知りたい
         →ログイン、ログアウトのシステムを作成する、またはIPアドレスで判別する!?

2. 信頼性について

    従量課金とか、不正が起こると困るようなシステム
          → ログインのシステム+CGI (スクリプトは危険)
    上記ほどではないがアクア氏のHPの根本になるような場合(ここでエラーになるとアクア氏のHP全体が機能しなくなるような場合)
          → 時間に関してはCGIのほうが良さそう。onUnloadは使用しないと無理ですが。
    趣味程度
          → 好きなように。
 


9:[回答] Malic [2003/04/09 14:34 ]

3.使用目的

   対象が1ページの時に、 次ページで対象ページの滞在時間を使用して、何か処理をする場合
      → CGI+スクリプト
   ログのように、後で使用する。
      → 自由に作成可能

4. スクリプトを使用する場合
    トップページに記述する滞在時間計測ページへのリンクをスクリプトで記述すると、普通の訪問者ならば作成者の希望どおりに動作する可能性が強い。


10:[回答] Malic [2003/04/09 14:46 ]

5.時間について
   A−−−−B−−−−C−−−−D
      通信       閲覧      通信

   A:CGI(やログ)での閲覧開始時刻
   B:スクリプトonLoadでの閲覧開始時刻
   C:スクリプトonUnloadの閲覧終了時刻
   D:CGI(やログ)での閲覧終了時刻

→ 通信時間が遅い回線を考慮するなら スクリプトの方がより正確
 
  またサーバ時刻とクライアント時刻は秒単位では一致していない場合の方が圧倒的に多いため、上記A−C間などのような組み合わせは避けましょう。

以上、長長と書きました。参考になると良いです。
 


11:[回答] アクア [2003/04/09 21:58 ]

gunさんお忙しい中ごめんなさい。
確かに自動終了方法っていいですね。

Malic様
詳しく書いてくださって有難う御座います。
色々考えて纏めてみます。
皆様有難う御座います。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World