序
今天在用DS文库的时候,发现一个问题,就是当用户购买了文库后,去查看金币没有扣除,于是我用小号反复测试了几遍。发现购买文档后,金币不改变。但是继续购买,发现已经无法购买,提示金币不足。
一、数据库
我第一时间想到去看数据库,发现pre_common_member_count
中extcredits1
金币已经没有了。
二、代码
返回过去查看该插件代码,发现所用的代码是直接更新数据库pre_common_member_count
,按道理来说是没有任何问题的。那到底问题出在哪?
三、缓存
马上想到了缓存,于是进入后台->工具->更新缓存
,更新缓存后,进入前台页面查看积分,发现依然没有变化。
普通缓存按道理这样就可以清除掉啊?为啥这里没有反应
突然想起来之前配置了memcache
,于是点击清除。进入前端查看,金币果然发生了变化。
四、updatemembercount函数
/**
* 添加积分
* @param Integer $uids: 用户uid或者uid数组
* @param String $dataarr: 积分操作数组
* @param Boolean $checkgroup: 是否检查用户组 true or false
* @param String $operation: 操作类型
* @param Integer $relatedid:
* @param String $ruletxt: 积分规则文本
* @param String $customtitle: 自定义积分记录标题
* @param String $custommemo: 自定义积分记录说明
*/
function updatemembercount($uids, $dataarr = array(), $checkgroup = true, $operation = '', $relatedid = 0, $ruletxt = '', $customtitle = '', $custommemo = '') {
if(!empty($uids) && (is_array($dataarr) && $dataarr)) {
require_once libfile('function/credit');
return _updatemembercount($uids, $dataarr, $checkgroup, $operation, $relatedid, $ruletxt, $customtitle, $custommemo);
}
return true;
}
推荐使用这个函数
updatemembercount($_G['uid'], array(1=>10),true,'',123,'提示显示','积分变更标题','积分变更详情');
PS:也可以C::memory()->clear();
来更新memcache之类的缓存
dz作为社区的老大,还是很好的。
不过现在好多都往移动端发展了,并且很多求快
感谢分享
OωO