cache系统 使用array驱动 原子锁 lock无法锁定
环境:centos8+php8+lavavel8
线上环境查看日志发现有个别用户在一秒内对某一接口连续发了多条请求,正常只有一条会被处理,其余请求在lock release后会被拒绝!但是实际上这几条请求全部同一时刻处理,造成多线程问题,数据被重复加了多次!
锁的部分代码如下:
$lock = \Cache::lock(“lockbyarraydrive:” . $userID, 10);
try{
$lock->block(10)
…
}
finally{
optional($lock)->release();
}
由于只有一台服务器所以只是使用了array缓存驱动,锁定时间设置为10秒!但是没有被锁定!
我查看了文档这个array驱动测试的时候用,目前已经改为memcached驱动,正在观察业务运行情况,不确定是否会解决!
一直没有找到问题的原因!希望各位有遇到相同情况的指点一下
————————-问题已解决——————————–
谢谢各位的解答 应该是多进程的问题!array进程间不共享!
昨天改成 memcached 锁以后问题就没有在出现并发问题
这个问题应该是解决了!不用再回复了 再次感谢!
推荐文章: