2014-09-08 7 views
1

나는 비디오 사이트를 구축, 사이트의 구조는 매우 간단합니다, 색인 페이지, 목록 페이지 및보고 페이지. 지금은 모든보고 페이지의 클릭 시간을 계산하려면, 관전 페이지의 URL 구조는 다음과 같습니다 /v/id.html 여기파이썬 구문 분석 nginx 로그

로그 파일의 일부입니다

58.52.168.119 - - [25/Aug/2014:00:00:30 +0800] "GET /v/31635.html HTTP/1.1" 200 10451 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0" 
58.52.168.119 - - [25/Aug/2014:00:00:39 +0800] "GET /v/31635.html HTTP/1.1" 200 10451 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0" 
125.85.189.50 - - [25/Aug/2014:00:00:42 +0800] "GET/HTTP/1.1" 200 44240 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1" 
42.49.223.150 - - [25/Aug/2014:00:00:50 +0800] "GET/HTTP/1.1" 200 44240 "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)" 
66.249.69.247 - - [25/Aug/2014:00:00:59 +0800] "GET /v/926.html HTTP/1.1" 200 10484 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 

내가 클릭 시간을 얻을 수, 페이지 id를 로그에서 가져 왔지만이 정보를 데이터베이스로 가져 오는 방법을 알지 못합니다. 나는 통계 정보에 접근하기위한 몇 가지 방법을 정의하고 싶다.

get_yesterday_click(id) #get yesterday's click times 
get_last7days_click(id) #get last week's click times 
get_last30days_click(id) #get last month's click times 
get_total_click(id)  #get the total click times 

누구든지 테이블을 만들고 이러한 방법을 구현하는 방법을 도울 수 있습니까?

+0

'나를 위해 코드'문제와 같았습니다. –

+0

아니요, 코드하지 마세요. 나에게 힌트를 줘. 나는이 데이터를 저장하는 몇 가지 방법을 시도했지만 그다지 좋지는 않았다. 그리고 어떻게 통계 정보를 저장하고 있는지보고 싶습니다. – xcaptain

+0

Google 웹 로그 분석에 대해 알고 있습니까? 당신이 그것을 사용할 수 있다면, 당신은 무료로 많은 분석을 얻을 수 있습니다. – Lovato

답변

0

문제는 매우 추악한 방법으로 해결되었습니다.

먼저 python을 사용하여 로그 파일을 구문 분석하여 사전을 가져옵니다.

다음 json 형식으로 파일에 사전을 작성하십시오.

PHP를 사용하여 json 파일을 읽고 데이터베이스에 씁니다. 내 stat 표는 같은 수 있습니다 :

 
+-------------+--------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+-------------+--------------+------+-----+---------+-------+ 
| id   | int(11)  | NO | PRI | NULL |  | 
| cdate  | char(8)  | YES |  |   |  | 
| day_click | int(11)  | YES |  | 0  |  | 
| week_click | varchar(200) | YES |  |   |  | 
| month_click | varchar(500) | YES |  |   |  | 
| total_click | int(11)  | YES |  | 1000 |  | 
+-------------+--------------+------+-----+---------+-------+ 

하나의 테스트 기록은 같은 것입니다 :

 
| 31967 | 20140826 |   2 | 2,2,2,2,2,2 | 2,2,2,2,2,2 |   12 | 

week_clickmonth_click은 대기열로 구현됩니다.

통계 프로그램을 구현하는 더 좋은 방법을보기를 바랍니다.