php接口防止多次请求,如何限制客户端频繁的调用接口?

在服务器端有个http接口,客户端通过发起post或get请求,调用该接口获取某些数据。为了限制客户端太频繁的发起请求,我要求至少60秒以上才能发起一次。现在我的做法是记录请求发起的时间,然后比较当次调用和上次调用的时间,小于60秒就返回某个状态码。请问除了这种方式,其他是否还有更简便的方式?例如设置服务器的Apache,求指导,谢谢。

回复讨论(解决方案)

没有比这个在简单的了

因为你不可能只对一个用户进行服务,如果限制了服务的频率(比如限制了 Apache 的响应)

那么假如有十个客户端的话,第十个客户端要在第一个客户端请求后的 10 分钟才会得到响应

这显然是不合情理的

没有比这个在简单的了

因为你不可能只对一个用户进行服务,如果限制了服务的频率(比如限制了 Apache 的响应)

那么假如有十个客户端的话,第十个客户端要在第一个客户端请求后的 10 分钟才会得到响应

这显然是不合情理的

访问接口,用memcache或者redis记录一个标识(如 ip或者用户id),设置过期时间,如60秒,下次访问时,判断是否有这个值,没有就允许访问,有,就说明还没过期,返回不能访问,内存记录应该快些

楼上说的没接触过,先了解下。

楼上说的没接触过,先了解下。如果非要实现功能的话,3楼说的是很好的解决办法

将用户访问接口事件写入日志,做相应的限制即可。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值