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);就可以了。