效果

1.开启Redis

打开你的Redis软件没有的话可以在小皮环境 软件管理中安装

2 .tp5配置config.php

'cache'                  => [// 驱动方式'type'   => 'redis',// 默认使用的缓存'default'   =>  [// 驱动方式'type'   => 'redis',// 缓存保存目录'path'   => CACHE_PATH,],// 缓存前缀'prefix' => '',// 缓存有效期 0表示永久缓存'expire' => 0,// redis缓存'redis'   =>  [// 驱动方式'type'   => 'redis',// 服务器地址'host'       => '127.0.0.1',],],

3.php代码

  function requestAccess($time=1,$limit=3){//获取访问用户的IP$ip=md5(request()->ip());//获取访问的接口路径$path=request()->path();//将IP和访问的接口路径md5加密成一个字符串,这样子就代表同一个客户访问的接口。$UV=md5($ip.$path);//每个IP和接口每分钟不能超过的次数$cacheIp=Cache::get($UV)?:0;if($cacheIp){if($cacheIp>$limit){return false;}else{Cache::inc($UV,1);}}else{Cache::set($UV,1,60);}//将每个请求的IP地址、参数和路径拼接成同一个用户的一个完全相同的接口。$post=json_encode(request()->post());$name=md5($path.$post);//每个相同的数据多少时间内不能请求$cache=Cache::get($name);if($cache==$ip){return false;}else{Cache::set($name,$ip,$time);return true;}}

4. 调用

在你需要限制频次的接口调用

if (!$this->requestAccess()){echo json(['code'=>200,'msg'=>'接口调用过于频繁'])->send();die;
}

tp5 限制访问频次相关推荐

  1. 关于访问频次限制的思考

    背景 某些业务场景下会有对单位时间内访问频次限制的需求,但是HTTP服务是无状态的,前端客户端又不能信任,所以一般就会在服务器端将用户信息和访问信息做下关联,以此来实现访问频次限制. 通常大家都会选择 ...

  2. MySQL 进阶 索引 -- SQL性能分析(SQL执行频率:查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次、慢查询日志、 profile详情、explain)

    文章目录 1. SQL性能分析 1.1 SQL执行频率(可以查看当前数据库SQL的访问频次) 1.2 慢查询日志(可以记录用时较长的SQL) 1.2.1 开启慢查询日志 1.2.2 慢查询日志测试 1 ...

  3. php接口访问次数,接口访问频次权限

    接口访问频次权限 频次限制 微博开放接口限制每段时间只能请求一定的次数.限制的单位时间有每小时.每天:限制的维度有单授权用户和单IP:部分特殊接口有单独的请求次数限制.例如:• 一个应用内单授权用户每 ...

  4. @requirespermissions注解是什么意思_如何基于spring开发自定义注解实现对接口访问频次限制?...

    做JavaWeb的开发的同学们都应该遇到过,客户要求某个接口进行频次的限制,如每秒并发10个,或者短信验证码发送场景,60秒内只允许发送一次. 通常开发的小伙伴们肯定是拿到以上需求在接口逻辑里进行实现 ...

  5. 接口访问次数_如何基于spring开发自定义注解实现对接口访问频次限制?

    做JavaWeb的开发的同学们都应该遇到过,客户要求某个接口进行频次的限制,如每秒并发10个,或者短信验证码发送场景,60秒内只允许发送一次. 通常开发的小伙伴们肯定是拿到以上需求在接口逻辑里进行实现 ...

  6. thinkphp6限制接口访问频次

    安装扩展包 composer require topthink/think-throttle 在 config/throttle.php 配置选项: // 缓存键前缀,防止键值与其他应用冲突'pref ...

  7. Redis构建频次访问控制器(一)

    Redis频次访问控制器 设计思路 频次控制旨在控制某个用户接触到某个广告的次数,以达到提高广告性价比的目的,一般来说,随着某个用户看到同一个广告频次的逐渐上升,点击率呈逐渐下降的趋势,因此在按照CP ...

  8. openresty开发系列37--nginx-lua-redis实现访问频率控制

    openresty开发系列37--nginx-lua-redis实现访问频率控制 一)需求背景 在高并发场景下为了防止某个访问ip访问的频率过高,有时候会需要控制用户的访问频次 在openresty中 ...

  9. sql获取某列出现频次最多的值_业务硬核SQL集锦

    戳上方蓝字关注我  这两年学会了跑sql,当时有很多同学帮助我精进了这个技能,现在也写成一个小教程,反馈给大家. 适用对象:工作中能接触到sql查询平台的业务同学(例如有数据查询权限的产品与运营同学) ...

最新文章

  1. 002_生活口语积累
  2. 本app(仿手机支付宝界面)ios源码
  3. LeetCode 47全排列Ⅱ48旋转图像
  4. 安卓休眠唤醒ajax休线程,休眠无法获得远程服务器上当前线程的事务同步会话...
  5. 解决statsmodels报错ValueError: Pandas data cast to numpy dtype of object.
  6. 江苏省消保委约谈14家企业,要求确保弹窗一键关闭无障碍实现
  7. mysql三高教程(二):2.7 如何约束数据
  8. 【论文写作】JSP旅游网如何写总体设计
  9. php利用svn hooks将程序自动发布到测试环境
  10. phpajax上传文件到服务器,PHP AJAX文件上传
  11. LED发光原理(笔记)
  12. Namenode处于安全模式时,对hadoop进行查看操作,edits_inprogress_txid中没有事物事件的增加,txid没有增加?
  13. 阿里云虚拟主机部署php项目分享
  14. 如何快速提升 Flutter App 中的动画性能
  15. ThinkPad T440s 改 T450s
  16. 联盟服务器维护,英雄联盟维护时间 lol官网服务器维护公告
  17. 关于mysql注入说法正确的是_1. 在 Spring中,下列关于 依赖注入 的 说法 , 正确的是( ) 。_学小易找答案...
  18. 漂亮MM超级搞笑问答
  19. 【备忘】2016年【极限班培训】大数据(尚学堂)
  20. 企业微信接口开发——通讯录管理(创建、删除)

热门文章

  1. java 泛型 与类反射_Java技能 —— 对象泛型以及类反射机制的应用
  2. 四元傅里叶显著性图-四元数-Matlab编程
  3. Python 3D绘图库pyecharts、matplotlib、openpyxl
  4. 苹果截屏快捷键_苹果12将在10月上市,介绍下苹果手机便捷的实用技巧,
  5. 中文计数法亿兆京垓秭穰沟涧正载
  6. W: GPG 错误:http://nginx.org/packages/ubuntu bionic InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY ABF5BD827BD9
  7. unix环境高级编程之 read与write 函数详解
  8. 单片机连接MySQL数据库
  9. python 发送邮件 163_python练习-使用163邮箱发送邮件
  10. 什么是弱人工智能强人工智能超人工智能