リファラーランキングを設置(とか)
トップページに(現在のところトップページにだけ)リファラーのランキングを設置しました。
これまでは各エントリーページに「本日のリンク元」っていう鬼瓦総合研究所さんのCGIを設置しておりました。 けれども3000エントリーに近くなってきた当サイトですと、データ(を保存しておくファイル)数も相当なものとなり、バックアップ負荷の原因でもありまして、且つJavaScript経由だったからなのか、取りこぼしがあったような気が。
どちらにせよサーバーに負荷を掛けておりましたので、取り敢えずこのCGIは撤退させる方向で元日を迎え(そんな元日の迎え方ってヤ)、どんな風にしようかな、っていうのを2日の「本家大飲み会」で酩酊しながら考え、3日にAWStatsのログからリファラーのデータを拾うっていう方法を思いつき、そのままphpを書きました。
最初はApacheのログを参照して...っていうのを考えたのですけど、相当数の拡張子に係るアクセスをログに書き込んでいない(画像とかインクルードものとか)とは言え、先月だけで7.5MBとかあるアクセスログのファイルをそう頻繁に開いてどうこうっていうのは全然バカっぽいっていうか、逆にサーバーに負荷を掛けちゃうような気がしました。
そこで、アクセス解析スクリプト「AWStats」が書き出してくれる「とっても整理された」ログを参照する事にしたんです。 これだったら先月のそれで1.6MB位に収まっているので何とかなるかな、って。
今回書いたphpスクリプトは将来的に公開する予定ですが、現段階ではとっても恥ずかしいコードでありますし、すっごくpadma colors専用で、公開したって誰も使えなさそうです。 テストしてみたい方はゲストブックかなんかにコメント下さい。 考慮します。 あ、取り敢えずAWStatsが起動していないと話にならないよ〜。
ちなみにphpは殆どの時間をMac OS X上で書きそして検証も行いました。 んでよさげなんでWindows XPで走ってるサーバーに移行して、少々の修正を加えて出来上がり。
ところでこのリファラーランキングですが、同一アドレスから10以上のアクセスがあればランクに入ります。 なんで10かっていうと、\dで一括削除出来ちゃうから(笑)。 月の半分を過ぎたら突如\d\dを削除(詰まり100以上のアクセスのみ表示)とかに...する予定。 ログを読み込んで成形し、配列に流し込んでソートしなおし、HTMLタグを付けながら書き出すっていうすごく単純なスクリプト。
それにしてもpreg_replaceって高速だなって感動したところであります。
追記:人気エントリーランキング、っていうのも作れちゃうね、これを流用すれば。




