TP5怎么使用Redis阻止web重复提交
在很多项目中遇到用户使劲点击按钮,会造成并发问题,同时会出现卡死问题【在处理复杂逻辑的方法中】。一般web端在异步请求后台时可以通过jQuery来阻止按钮重复提交,
jquery:
var isClick = true;
$(“#comfirmButton”).on(“click”, function () {
if (isClick) {
isClick = false;
//做你想做的
}
setTimeout(function () {
isClick = true;
}, 5000);//五秒内不能重复点击
});
那么TP5使用Redis怎么实现阻止重复web提交呢?请看下面代码
记得【引入Redis】:use think\cache\driver\Redis;
$post=$this->request->post();
$time=time();
$redis=new Redis();
$key = "progromName_" . md5(json_encode($post));// 转md5判断缓存名是否有一致的
if($redis->has($key)){
//判断缓存名是否存在
$redis_time=$redis->get($key);
$redis_bet=time()-$redis_time;
if($redis_bet <= 5000){
return json(['code'=>400,'msg'=>'5秒之内只能提交一次!']);
}
}
$redis->set($key, $time, 10);// 缓存时间(10秒)
版权声明:本文为weixin_37616043原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。