Hatena::Grouprubyist

Rubyを勉強しようと思ってはじめた日記

2008-05-30

SQLで集計してランキングを出す(0.54)

| 00:55 | SQLで集計してランキングを出す(0.54) - Rubyを勉強しようと思ってはじめた日記 を含むブックマーク はてなブックマーク - SQLで集計してランキングを出す(0.54) - Rubyを勉強しようと思ってはじめた日記 SQLで集計してランキングを出す(0.54) - Rubyを勉強しようと思ってはじめた日記 のブックマークコメント

アクセスログを読み込んで、DBMySQL)にデータを保存していくsetup.rbはこんな感じ。これをcronで定期的に実行すればログファイルは、DBに入ります。

setup.rb

require 'rubygems'
require 'active_record'
require 'date'
require 'time'

ActiveRecord::Base.establish_connection(
   :adapter  => 'mysql',
   :host     => 'localhost',
   :username => 'username',
   :password => 'mysql',
   :database => 'access_log'
)

class Entrys < ActiveRecord::Base
    set_table_name "entry"
end

montn_array = { 
    'Jan' => 1,
    'Feb' => 2,
    'Mar' => 3,
    'Apr' => 4,
    'May' => 5,
    'Jun' => 6,
    'Jul' => 7,
    'Aug' => 8,
    'Sep' => 9,
    'Oct' => 10, 
    'Nov' => 11, 
    'Dec' => 12
}

logfile = '../access_log'
logs    = open(logfile,'r')
while text = logs.gets do
    /^([^ ]*) ([^ ]*) ([^ ]*) \[([^]]*)\] "([^ ]*)(?: *([^ ]*) *([^ ]*))?" ([^ ]*) ([^ ]*) "(.*?)" "(.*?)"/u =~ text
    url = $6

    begin

        entry = Entrys.new
        entry.url = url
        entry.ref = $10
        entry.ua  = $11
        /^(.*)\/(.*)\/(.*):(.*):(.*):(.*) \+0900/ =~ $4
        at_time = Time.local($3, montn_array[$2], $1, $4, $5, $6) 
        entry.access_date = at_time

        if url =~ /(php$|html$|^\/$)/
            entry.save
        end
    rescue => ex
        print ex,' : ',text
    end
end
logs.close

CsillaCsilla2012/10/16 03:17It's great to find smoeone so on the ball

yyrfefyyrfef2012/10/16 21:25QDzUBW <a href="http://qdtjqimtggdv.com/">qdtjqimtggdv</a>

vietomxbxmvietomxbxm2012/10/19 13:41YnimI4 , [url=http://sqyibqypbirq.com/]sqyibqypbirq[/url], [link=http://amuhalrutzsq.com/]amuhalrutzsq[/link], http://cdwfkcsrwnts.com/

zkvnjmfzkvnjmf2012/10/20 01:13rdsFmS <a href="http://nhrfmgpcggmr.com/">nhrfmgpcggmr</a>

ozxjazmqdvozxjazmqdv2012/10/20 11:24IdFqLz , [url=http://uxhchildmspq.com/]uxhchildmspq[/url], [link=http://xmevsiqztvcq.com/]xmevsiqztvcq[/link], http://jmvryykukpkf.com/

カレンダー
2007 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2009 | 06 | 08 |