Verileri bir tabloya (raporlama, istatistik vs ...) kaydetmem gerekiyor, böylece kullanıcı zamana, kullanıcı aracısına vb. Göre arama yapabilir. Her gün çalışan bir komut dosyası var. Apache Günlüğü'nü ve ardından veritabanına ekleyin.Parse Apache PHP kullanarak preg_match kullanarak
Giriş formatı:
10.1.1.150 - - [29/September/2011:14:21:49 -0400] "GET /info/ HTTP/1.1" 200 9955 "http://www.domain.com/download/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
Benim regex:
preg_match('/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/',$log, $matches);
Şimdi yazdırın:
print_r($matches);
Array
(
[0] => 10.1.1.150 - - [29/September/2011:14:21:49 -0400] "GET /info/ HTTP/1.1" 200 9955 "http://www.domain.com/download/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
[1] => 10.1.1.150
[2] => -
[3] => -
[4] => 29/September/2011
[5] => 14:21:49
[6] => -0400
[7] => GET
[8] => /info/
[9] => HTTP/1.1
[10] => 200
[11] => 9955
[12] => "http://www.domain.com/download/"
[13] => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
)
alıyorum: "http://www.domain.com/download/"
ve kullanıcı aracısı için aynı. Bu "
ifadesinden nasıl düzenli olarak kurtulabilirim? Bonus (tarih/saati kolayca eklemenin hızlı bir yolu var mı?)
Teşekkür
Bu bir soru kopyasıdır # 2221636 –
Bunun için basit bir yardımcı ders yazdım. Bkz. Https://github.com/Spudley/ApacheLogIterator – SDC
@SDC: Teşekkürler Simon, bu yineleyici harika! – Pete855217