世間の夏休みも後半戦に入ってるかと思いますが、みなさまいかがお過ごしですか?このサイトのアクセスもめっきり少なくなってるんで、みんな田舎に帰ったり、どこかに旅行に行ったりしてるんだろうなぁ。こちらは会社でせっせとスクリプト書いてるさ…しかもハマり中_| ̄|○
作ってるのは「Webサイトであるページからどういったページを辿っているか」を追跡するスクリプトです。最初は単純にリファラ元に追跡すれば楽勝かなって思って作成開始。その後、リファラを切ってるアクセスも追いたいなって事で「リファラがない」「同じIP」「同じAgent」「近い時間帯」を同一人物のアクセスとみなして追跡するようにもした。
ここまでは勢いで作れて、実際に本物のログをかましてスクリプトを走らせたら…重い…1つの追跡を処理するのに2時間経っても終わらねぇ…。で、2時間半くらいでやっと追跡終了。ログのサイズも結構大きくて200Mくらいだけど、こんなに重くちゃ話しにならない。
というわけで少し改造。結果、10分まで短くなる。やればできますやん。自分。まだ改良の余地はあったけど、とりあえず許せる時間なのでこれで完成…と思いきや、まだ問題があった。
肝心の追わなければならないページの最初のアクセスログが腐ってた…。ページ遷移にJavascriptを使ってるみたいで、その場合、
リファラが残らないっぽい(理由はよくわからないがIEはダメみたいネ…)。
2ページ目からは普通のアクセスでリファラも残る。あと、途中のページ遷移もおかしくて、うまくリファラで追えないという(リファラを追うとログが分岐してるっぽい所が…)。
このあたりの変な部分をうまいことスクリプトで吸収しようとしたけどダメだった。丸一日悩んでもいい解決策は浮かばず。
ちなみに高機能なログ解析ソフト
Urchinの追跡機能をもってしてもダメでしたさ。逆に遷移の途中にhttp→httpsへのジャンプがあったせいかボロボロだったかも(こいつはどういったアルゴリズムで追跡してるんだろう?)。
ログを追跡したいなら、ページ遷移を考慮してWebシステム作って欲しかったなぁ。
結局、リファラは絶対ではなく、あくまで参考という形にして、ログを追跡するようにしてみた。追跡の精度は落ちるけどまぁ、大丈夫そうかなって感じの結果を得る事ができた。
と、言うわけで追跡したいページ一式をスクリプトに流し込んで会社を後にした。明日、出社する頃には終わってるかな。
余談だけどスクリプトは久しぶりにPerl使ってみた。最近はshやphpばっかりだったもので。
更に余談だけどうちのサイトのログ解析に使ってる
SlimStatってのがあったや…こいつもページ追ってくれてたなぁ。今更試す気にはならないけど。
作成日:2007/08/16 01:43:15