TP5怎么使用Redis阻止web重复提交

                                                                                 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秒)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TP6(ThinkPHP 6)是一个基于PHP的开源框架,它提供了丰富的功能和工具来简化Web应用程序的开发过程。在TP6中使用Redis可以提高应用程序的性能和可扩展性。下面是一个演示如何在TP6中使用Redis的例子: 首先,确保你已经安装了RedisPHPRedis扩展。然后,在TP6的配置文件`config/cache.php`中配置Redis连接信息,例如: ```php return [ // 默认缓存驱动 'default' => env('cache.driver', 'redis'), // 缓存连接方式配置 'stores' => [ // Redis缓存连接配置 'redis' => [ // 驱动方式 'type' => 'redis', // 服务器地址 'host' => '127.0.0.1', // 端口号 'port' => 6379, // 密码 'password' => '', // 缓存前缀 'prefix' => '', // 缓存有效期 0表示永久缓存 'expire' => 0, ], ], ]; ``` 接下来,在控制器中使用Redis进行缓存操作。例如,我们可以在一个控制器方法中设置和获取缓存: ```php <?php namespace app\controller; use think\facade\Cache; class Index { public function index() { // 设置缓存 Cache::store('redis')->set('name', 'John Doe'); // 获取缓存 $name = Cache::store('redis')->get('name'); return 'Hello, ' . $name; } } ``` 在上面的例子中,我们使用`Cache::store('redis')`来指定使用Redis作为缓存驱动。然后,我们可以使用`set`方法设置缓存,使用`get`方法获取缓存。 请注意,以上只是一个简单的示例,你可以根据自己的需求在TP6中使用更多的Redis功能和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值