Heim  >  Artikel  >  php教程  >  怎么限制客户端频繁的调用接口

怎么限制客户端频繁的调用接口

WBOY
WBOYOriginal
2016-06-06 19:43:152904Durchsuche

如何限制客户端频繁的调用接口? 在服务器端有个http接口,客户端通过发起post或get请求,调用该接口获取某些数据。为了限制客户端太频繁的发起请求,我要求至少60秒以上才能发起一次。现在我的做法是记录请求发起的时间,然后比较当次调用和上次调用的时间,

如何限制客户端频繁的调用接口?
在服务器端有个http接口,客户端通过发起post或get请求,调用该接口获取某些数据。为了限制客户端太频繁的发起请求,我要求至少60秒以上才能发起一次。现在我的做法是记录请求发起的时间,然后比较当次调用和上次调用的时间,小于60秒就返回某个状态码。请问除了这种方式,其他是否还有更简便的方式?例如设置服务器的Apache,求指导,谢谢。
------解决思路----------------------
没有比这个在简单的了
因为你不可能只对一个用户进行服务,如果限制了服务的频率(比如限制了 Apache 的响应)
那么假如有十个客户端的话,第十个客户端要在第一个客户端请求后的 10 分钟才会得到响应
这显然是不合情理的
------解决思路----------------------
访问接口,用memcache或者redis记录一个标识(如 ip或者用户id),设置过期时间,如60秒,下次访问时,判断是否有这个值,没有就允许访问,有,就说明还没过期,返回不能访问,内存记录应该快【本文来自鸿网互联 (http://www.68idc.cn)】些
------解决思路----------------------
引用:
楼上说的没接触过,先了解下。
如果非要实现功能的话,3楼说的是很好的解决办法
------解决思路----------------------
将用户访问接口事件写入日志,做相应的限制即可。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn