发新话题
打印

dz论坛后台用户评分记录不更新的解决办法

dz论坛后台用户评分记录不更新的解决办法

我看官网论坛上说是bug,但没看见官方发布解决办法,看来他们现在只服务商业用户了,有很多网友报上去的错误官网都不会回应。
目前还没有找到很好的办法,有网友这么处理:
如果实在要看最新的,把forumdata/logs/目录下的200704打头的文件改名或备份后删除。这样就可以看到5月份的数据了。
但这样的话,当天能更新,第二天又不行了,我都试过了。
出现问题的两个可能:
1.'bbs/forumdata/logs'文件夹没有写权限;
2.get_log_files函数有问题;
真正的问题出在下面这个函数:
function get_log_files($logdir='bbs/forumdata/logs', $action='action') {
      $dir = opendir($logdir);
      $files = array();
      while($entry = readdir($dir)) {
           $files[] = $entry;
      }
      closedir($dir);

      sort($files);
      $logfile = $action;
      $logfiles = array();
      foreach($files as $file) {
            if(strpos($file, $logfile) !== FALSE) {
                 $logfiles[] = $file;
             }
       }
       $logfiles = array_slice($logfiles, -2, 2);
       return $logfiles;
}

$logfiles = get_log_files($logdir, $action); //读取日志记录
$logfiles = array_slice($logfiles, -2, 2); 这里只取了两个日志文件,那评分日志文件为例,ratelog.php最原始的评分记录,200903_ratelog.php当月的记录日志,而当月的记录超过一定的数量以后会生成200903_ratelog_1.php备份,这样的话get_log_files只能读到200903_ratelog_1.php和retelog.php两个文件的记录,新记录就不能被显示,解决的办法就是将这里$logfiles = array_slice($logfiles, -2, 2);读取的数目变大,$logfiles = array_slice($logfiles, -3, 3);就可以了。

TOP

发新话题