前台显示的总会员数与用户表总数不一致的问题排查
今天有个朋友反应他的站前台显示的会员数和用户表里不一致,顺便帮他排查了下。
原因:
由于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互联的游客用户表。