php读取大日志文件,怎么玩? 20C

php读取大日志文件,怎么玩?

急急急急急急急急

本人是一名php新手,刚到公司1周左右...
项目经理给了我一个任务.

用户访问网站产生的日志文件有点大2.5g多(Nginx)

文件是这样的:

2xx.2x.1x7.1x0 - - [20/Jul/2015:16:55:34 +0800] "GET /index.php?s=User&m=User&a=shownotice&id[
0]=exp&id[1]==0))+union+select+1,1,0,5,0,(select%20concat(create_time,get_data)%20from%20log%20where%20content='%E4%BF%AE%E6%94%B9%E7%AE%A1%E7%90%86%E5%91%98'%20order%20by%20id%20desc%20limit%209,1),0,0,0,0+--%20 HTTP/1.1" 200 2153 "http://www.abcc.com/index.php?s=User&m=User&a=shownotice&id[0]=exp&id[1]==0))+union+select+1,1,0,5,0,(select%20concat(create_time,get_data)%20from%20log%20where%20content='%E4%BF%AE%E6%94%B9%E7%AE%A1%E7%90%86%E5%91%98'%20order%20by%20id%20desc%20limit%209,1),0,0,0,0+--%20" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) CometHTTP" -.
这些字符串里有些有SQL注入,有些是访问没成功的.还有后缀名为.js | .css | .jpg
因为日志是一行一行的,只要其中一行包含.js.css.jpg.
请求失败的为 404 成功的是 200,如果成功的就写入到一个新的文本文件里.只要包含.js.css.jpg.png之类的就删掉,好像是404的话就把404给删除了
并且像这样的日期-> [20/Jul/2015:16:55:34 +0800]
转换成正常的年月日,

日志文件的行数在 840万行左右....我用sublime打开我机器都卡死了.****

我想了下用到什么 fopen函数,file_get_contents函数,stream_get_line函数..
不知道咋写...有点着急..项目经理要在**周一 下午完成**...
请各位大牛帮帮忙,最好给点实例..给点思路,给点函数.
我觉得不算抄.抄的好,就是自己的抄懂了..我c币也不多...
谢谢

1个回答

robot-N 的 php读取超大日志文件,可以看看,我是又涨见识了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问