之前有一篇文章《WordPress技巧:生成网站日志》,不少读者看了后反映该日志每天都会追加生成,文件会越来越大,而tiandi自己的网站日志则是只保留一天,第二天会自动覆盖前一天的日志文件,那么如何只生成当天的日志文件呢?其实很简单,只要在原先代码的基础上加一个时间判定变OK了。
这里,我只列出上文中有关的function,原先的代码如下:
function make_log_file(){ //log文件名 $filename = 'mylogs.txt'; //去除rc-ajax评论以及cron机制访问记录 if(strstr($_SERVER["REQUEST_URI"],"rc-ajax")== false && strstr($_SERVER["REQUEST_URI"],"wp-cron.php")== false ) { $word .= date('mdHis',$_SERVER['REQUEST_TIME'] + 3600*8) . " "; //访问页面 $word .= $_SERVER["REQUEST_URI"] ." "; //协议 $word .= $_SERVER['SERVER_PROTOCOL'] ." "; //方法,POST OR GET $word .= $_SERVER['REQUEST_METHOD'] . " "; //$word .= $_SERVER['HTTP_ACCEPT'] . " "; //获得浏览器信息 $word .= getbrowser(). " "; //传递参数 $word .= "[". $_SERVER['QUERY_STRING'] . "] "; //跳转地址 $word .= $_SERVER['HTTP_REFERER'] . " "; //获取IP $word .= getIP() . " "; $word .= "\n"; $fh = fopen($filename, "a"); fwrite($fh, $word); fclose($fh); } }
将末尾部分的
$word .= getIP() . " "; $word .= "\n"; $fh = fopen($filename, "a"); fwrite($fh, $word); fclose($fh);
替换为以下即可:
$word .= getIP() . " "; $word .= "\n"; $day = date('md',$_SERVER['REQUEST_TIME'] + 3600*8); if (file_exists($filename)) { $fh = fopen($filename, "r"); $data = fread($fh, 10); if(substr($data,0,4) == $day) $fh = fopen($filename, "a"); else $fh = fopen($filename, "w"); fwrite($fh, $word); fclose($fh);
这样程序检测到当前日期和当前日志里的日期不一致时,就会自动覆盖日志,从而达到只保留当天日志的需求。至于如何保留指定天数的日志么,也很简单,这里tiandi只说下实现的方法,把上面的$day获得的时间和日志里的比大小,大于指定天数覆盖写入,否则追加写入。
文章评分2次,平均分5.0:★★★★★
替换后语法错误
很实用,很不错的功能
mark下。。。。。
不错的博客,支持一下
只保留当天的网络日志 不错
嗯!
以前用过一段时间来检测百度的蛛蛛。
你这人评论前先开启评论不错哈。是代码? 还是插件?
代码实现的,站内有文章介绍
主机后台有log生成,
这样方便些,不用再另外登陆主机查询了。
看我最新一篇文章,我现在戒掉本地保存log了
看起来很高端的样子
不错,纯技术,来看看。
纯技术……….
霸气十足,不过我用的是CNZZ统计的
我是这么做的,其实可以保留多天的,根据日期,每天写入不同的文件,写新文件时把以前的日志压缩一下,TXT文本用ZIP压缩一下可以变得非常小
这样也是可以的,不过我主要是用来分析当天蜘蛛爬行的,24之前的就没啥用了。
呃,原来是这样,可以在写入的时候加一条判断,不是蜘蛛的抛弃,文件就不会太大了
以前在学校内网的论坛,我做了个随机png,里面就嵌入了统计代码,一天保存一个文件
做这个的目的是?
实现这个:http://www.tiandiyoyo.com/show-spiders/
博主是做前端的?
不是,你看我主题这么丑陋能是做前端的么。。。
现在不用wordpress了 占资源
如果是光做记录文章用途的话,WP确实不适合。
博客监控LOG插件??
蜘蛛爬行啊。
技术贴啊