转载:WordPress技巧:只保留当天的网络日志
之前有一篇文章《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获得的时间和日志里的比大小,大于指定天数覆盖写入,否则追加写入。

标签:WordPress

你的评论