之前有一篇文章《WordPress技巧:生成网站日志》,不少读者看了后反映该日志每天都会追加生成,文件会越来越大,而梦飞扬自己的网站日志则是只保留一天,第二天会自动覆盖前一天的日志文件,那么如何只生成当天的日志文件呢?其实很简单,只要在原先代码的基础上加一个时间判定变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);
这样程序检测到当前日期和当前日志里的日期不一致时,就会自动覆盖日志,从而达到只保留当天日志的需求。至于如何保留指定天数的日志么,也很简单,这里只说下实现的方法,把上面的$day获得的时间和日志里的比大小,大于指定天数覆盖写入,否则追加写入。