今天有个朋友反应他的站前台显示的会员数和用户表里不一致,顺便帮他排查了下。
原因:
由于QQ互联之前更改了注册流程,引入了QQ互联游客组的概念。
所以Discuz侧计算会员总数的时候也带上了QQ互联游客组的数目。
具体的分析:
source\class\table\table_common_member.php文件,有如下代码:
/**
* 统计会员数
* @param int $fetch_archive 0:只查询主表,1:查询主表和存档表
* @return int
*/
public function count($fetch_archive = 1) {
$count = DB::result_first('SELECT COUNT(*) FROM %t', array($this->_table));
if(isset($this->membersplit) && $fetch_archive) {
$count += C::t($this->_table.'_archive')->count();
}
//增加QQ互联临时用户数
$count += intval(DB::result_first('SELECT COUNT(*) FROM '.DB::table('common_connect_guest'), null, true));
return $count;
}
注意其中的这句代码
$count += intval(DB::result_first('SELECT COUNT(*) FROM '.DB::table('common_connect_guest'), null, true));
这里加上了common_connect_guest表里的记录数,common_member_guest表是QQ互联的游客用户表。