好吧,没有办法做我所问,没有任何写入服务器,但我至少可以消除记录每一个请求。一种方法是使用“漏桶”调节方法,其中它只记录最后一个请求($ last_api_request)和请求数量/时间框架限制($ minute_throttle)的比率。泄漏桶从不重置其计数器(与Twitter API的油门每小时重置一样),但是如果桶满了(用户达到极限),他们必须等待n秒钟才能使桶清空一点,然后才能再次发出请求。换句话说,它就像一个滚动限制:如果在时间框架内有先前的请求,它们正在缓慢地从桶中泄漏;它只会限制你,如果你填满了桶。

此代码段将对每个请求计算一个新的$ minute_throttle值。我在$ minute_throttle中指定了分钟,因为您可以添加任何时间段的节流,例如每小时,每天等…虽然不止一个会迅速使用户感到困惑。

$minute = 60;

$minute_limit = 100; # users are limited to 100 requests/minute

$last_api_request = $this->get_last_api_request(); # get from the DB; in epoch seconds

$last_api_diff = time() - $last_api_request; # in seconds

$minute_throttle = $this->get_throttle_minute(); # get from the DB

if ( is_null( $minute_limit ) ) {

$new_minute_throttle = 0;

} else {

$new_minute_throttle = $minute_throttle - $last_api_diff;

$new_minute_throttle = $new_minute_throttle < 0 ? 0 : $new_minute_throttle;

$new_minute_throttle += $minute / $minute_limit;

$minute_hits_remaining = floor( ( $minute - $new_minute_throttle ) * $minute_limit / $minute );

# can output this value with the request if desired:

$minute_hits_remaining = $minute_hits_remaining >= 0 ? $minute_hits_remaining : 0;

}

if ( $new_minute_throttle > $minute ) {

$wait = ceil( $new_minute_throttle - $minute );

usleep( 250000 );

throw new My_Exception ( 'The one-minute API limit of ' . $minute_limit

. ' requests has been exceeded. Please wait ' . $wait . ' seconds before attempting again.' );

}

# Save the values back to the database.

$this->save_last_api_request( time() );

$this->save_throttle_minute( $new_minute_throttle );

php 网站api,php – 如何调节网站的API用户?相关推荐

  1. (0029) iOS 开发之API HTTP 请求调试网站

    API & HTTP 请求调试网站||软件 1.Apizza 2.Requests: 让 HTTP 服务人类 3.Postman

  2. 【收集】【API接口】收集好用的API接口网站(会持续更新)

    文章目录 [翻译接口] [天气.地理.位置.天文.海洋接口] [翻译接口] [1]小牛翻译,目前是最全语种,可达304种翻译语言方向.(覆盖联合国所有会员国官方语言可提供包括主流语言.少数民族语言.小 ...

  3. 如何使用支付宝api接入自己的网站

    要使用支付宝 API 接入自己的网站,需要按照以下步骤进行: 在支付宝开发者中心注册账号并创建应用.您需要填写应用名称.服务窗名称和授权回调地址等信息,然后提交审核. 获取应用的 app_id 和 a ...

  4. alexa api php,PHP中网站的Alexa排名怎么利用Alexa API进行获取

    PHP中网站的Alexa排名怎么利用Alexa API进行获取 发布时间:2020-12-19 15:15:59 来源:亿速云 阅读:75 作者:Leah PHP中网站的Alexa排名怎么利用Alex ...

  5. 如何将网站数据导入服务器里,网站是无意识的将数据导入和导出Web客户端

    讨论一下,从长远来看,即使我们有URL,我们也会有一个web,在这个web中,很容易将数据放入沙箱中,但不可能将其取出. 网络作为一个开放的互操作平台改变了世界.它使我们能够通过一组开放的技术(如AP ...

  6. 学习java的中文网站_学习java的网站有哪些

    1.Stack overflow Stack可能是编程界中非常流行的网站了 , 是一个与程序相关的 IT 技术问答网站,用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的 ...

  7. 网站的服务器怎么维护,网站服务器怎么维护

    网站服务器怎么维护 内容精选 换一换 云服务器使用,服务器使用,服务器配置,云主机使用,弹性云服务器入门,ecs使用 来自:产品 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.AP ...

  8. apache 网站转nginx_堡塔网站加速宝塔面板网站加速安装设置使用教程

    堡塔网站加速是宝塔面板为用户开发的一款网站加速插件,基于页面缓存的网站加速插件,支持常见的众多建站程序加速.其原理是在http协议层缓存动态页面,对实时信息及已登录的会话跳出缓存,此技术主要针对匿名访 ...

  9. 旅游类网站的服务器配置,旅游各类 网站界面

    旅游各类 网站界面 内容精选 换一换 云速建站服务(Cloud Site-building Service)是一款帮助您搭建网站的华为云服务.提供PC.手机.微信网站.小程序.APP五站合一的模板建站 ...

最新文章

  1. iOS 合并.a文件,制作通用静态库
  2. VVC编码进展:码率降低,速度仍需提升
  3. oracle11g 查看磁盘,oracle11g 磁盘
  4. 黑色幽默:“新知青”电影《走着瞧》首映
  5. 【javascript高级教程】JavaScript Array(数组) 对象
  6. 糟糕的C语言睡眠排序算法
  7. postgres与osm初步使用
  8. c语言中do有什么作用,C语言中do while语句的用法是什么?_后端开发
  9. java 复选框怎么用_Java Swing公开课|Java Swing的复选框组件怎么用,看完这篇文章你一定就会了...
  10. 计算机的我发展趋势,胡生:简述计算机的发展趋势是什么?
  11. 数据结构利器之私房STL
  12. NGSL + NAWL 单词表 以及学习网站
  13. 千山独行-一个人的创业路(连载八)
  14. VC++编程之字符串解惑--Unicode MBCS
  15. PROTUES实例——stm32点灯
  16. 【今日CV 计算机视觉论文速览 第95期】Fri, 5 Apr 2019
  17. 故障电弧检测技术现状及难点
  18. 一度智信:如何提高自己的电商店铺权重
  19. vue修改http请求头_vue-resouce设置请求头的三种方法
  20. php开发discuz插件,discuz x3插件开发傻瓜图文教程,用demo说话

热门文章

  1. Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块
  2. 代码重新发布后docker服务会不会受影响_分享点经验 | 浅谈微服务架构
  3. ihtml2document能不能根据id获取dom_JavaScript学习笔记(十三)-- DOM(上)
  4. python美化输出模块_美化输出结果之Python模块PrettyTable介绍
  5. IDEA下Springcloud框架搭建(一)之服务注册与发现
  6. html盒子阴影效果,CSS3给div或者文字添加阴影(盒子阴影、文本阴影的使用)
  7. 函数 单片机glint_PIC单片机CCS之C语言(#BIT的用法)
  8. 模型描述的关系模式_框架篇:见识一下linux高性能网络IO+Reactor模型
  9. Docker实践(二)镜像
  10. java byte short_java.lang.Short.byteValue()方法实例