<?
include_once("./_common.php");
include_once("$g4[path]/head.sub.php");
/*

제작 : freeimage.kr 김성대
목적 : grep 등으로 필터링한 아파치 로그를 테이블로 저장하여 분석하기 위함..
사용 : 그냥 분석하면 답없다.. 대충 필터링한다음 나온 파일을 DB에 넣은뒤
  찌지고 뽁고 해서 문제점을 찾아낸다.. ^^
  전부다 저장하면 하세월 걸리니 if 문으로 적당히 처리하시길..


데이타 구조
CREATE TABLE IF NOT EXISTS `ar_apache_log` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(15) NOT NULL,
  `date` datetime NOT NULL,
  `post` enum('GET','POST') NOT NULL,
  `url` varchar(255) NOT NULL,
  `stat` int(11) NOT NULL,
  `size` int(11) NOT NULL,
  PRIMARY KEY (`no`),
  UNIQUE KEY `ip` (`ip`,`date`,`url`,`stat`)
) ENGINE=InnoDB  DEFAULT CHARSET=euckr  ;

*/

//m.access.log:211.36.138.73 - - [17/Jul/2013:16:08:15 +0900] "GET /images/ico_all.png HTTP/1.1" 200 1997 "http://viewkorea.co.kr/" "Mozilla/5.0 (Linux; U; Android 4.1.2; ko-kr; SHV-E210L Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 NAVER(inapp; search; 220; 4.7.1)"

$buff='m.access.log:211.36.138.73 - - [17/Jul/2013:16:08:15 +0900] "GET /images/ico_all.png HTTP/1.1" 200 1997';

$reg ="(.+?):";					//  1 m.access.log
$reg.="([\d.\d.\d.\d]+) - - ";	// 2 211.36.133.11
$reg.="\[(.+?)\] ";				// 3 17/Jul/2013:16:08:15 +0900 
$reg.="\"(.+?) ";				// 4 GET
$reg.="(.+?) HTTP\/";			// 5 /images/ico_all.png
$reg.="(.+?)\" ";				// 6 1.1
$reg.="(.+\d) (.+\d)";			// 7 200  8 1997
//$reg.="( (.+?)";					// 8 1.1
//$reg.="\"(.+?)\" ";				// 9 
//$reg.="\"(.+?)\"";				// 9 

$g4[ar_log_table]="ar_apache_log";

//로그 파일은 여기에.. 지정
$fp=fopen("../../lo2","r");
$line=0;
echo "<xmp>";

while($buff=fgets($fp)) {
	$line++;
	//echo "$buff\n";
	preg_match("/$reg/",$buff,$match);

	$date=date("Y-m-d H:i:s",strtotime($match[3]));

	//저장할 날짜범위 지정
	if ($date<='2013-01-31 00:00:00') continue;
	if ($date>='2013-08-31 00:00:00') continue;
	
	//var_dump($match);
	$sql="insert into $g4[ar_log_table] set
	ip='$match[2]',
	date='$date',
	post='$match[4]',
	url='$match[5]',
	stat='$match[7]',
	size='$match[8]'";
	if ($line%1000==0) {
		echo "$line. $sql \n";
	}
	sql_query($sql,false);
	//if (mysql_error()) echo mysql_error(),"\n";
	//if ($line>10) break;
}
fclose($fp);

?>