数据重复添加&锁

2017-02-24  本文已影响0人  yeqingwen

需求:

H5小游戏使用微信公众号进行网页授权登录,同一个用户的openid只允许有一条记录

问题描述

按照这个样的流程,当同一个用户并发的请求时,由于从查询到新建,中间间隔了去微信服务器查询的时间,导致新建的那个时刻,数据库有可能已经创建了一条数据。

解决方案

$memcacke_key = 'new_user_oid_'.$openid;
if(!$user_info=User::model()->find('openid=:t_o', array(':t_o', array(':t_o'=>$openid))) {
  if(!Yii::app()->memcache->get($memcacke_key)) {
    Yii::app()->memcache->set($memcacke_key, 1, 60);
    $user_info = new User;
    ...
    $user_info->save();    //保存进数据库
  }
}
上一篇 下一篇

猜你喜欢

热点阅读