盒子
盒子

一次并发处理

解决并发导致创建相同用户。

最近对一个设备做API,发现读取设备信息的时候是以广播来的

广播的形式,那就会出现并发的情况。

同一秒可能有5次的相同请求,这样导致创建两条相同的记录

用memcache的原子性,根据请求的参数去生成key,再来就判断有没有,有就返回处理中

效果如下:

可以看到第一次请求,还没返回,第二次请求就过来了,第二次请求就返回正在处理中,第三次也是与第二次相同,这时候返回第一次的处理,处理成功

第四次,第五次 保存的key还没失效,继续返回处理中,其实应该返回处理完成,可再完善,成功就把key删除。

1
2
3
4
5
6
7
// 处理并发 3s
$cache = \Cache_Memcache::get_instance();
$key = 'ZZZD_' . $idcard;
if ($cache->get($key)) {
$this->repFail(99999, '');
}
$cache->set($key, 1, 3);

代码很简单,主要是原子性,知识点,哈哈!

支持一下
扫一扫,支持我
  • 微信扫一扫
  • 支付宝扫一扫