介绍
这篇文章主要介绍PHP接口访问频率限制的示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
发现网上很多限制都只是1分钟(或者某个时间)内访问的限制。
比如1分钟限制10次那我在59秒的访问了10次,然后关键又过期了,接下1分来钟又可以访问了。这种限制根本就不合理。
所以有了我的想法。
直接上代码吧。
/* * ,* @param uid美元 ,* @return bool | int ,*检测用户接口访问频率 ,*/function api_frequency_visits (uid)美元,{ ,,,key 美元;=,“用户:{$ uid}: api: frequency"; ,,,redis 美元;=,new 复述(); ,,,复述,美元→连接(& # 39;127.0.0.1 # 39;); ,,,data 美元;=,复述,→美元hGetAll(关键); ,,,//需要删除的关键 ,,,del_key 美元;=,[]; ,,,//时间内访问的总次数 ,,,total 美元;=,0; ,,,//时间内最大访问次数 ,,,max_frequency 美元;=,10; ,,,//当前时间 ,,,now_time 美元;=,(); ,,,//限制时间 ,,,limit_time 美元;=,60; ,,,foreach (data 美元;as 时间=美元在美元数),{ ,,,,,,,if (time 美元;& lt;, now_time 美元;作用;limit_time美元),{ ,,,,,,,,,,,美元del_key[],=,美元的时间; ,,,,,,,},{else ,,,,,,,,,,,total 美元;+=,美元计数; ,,,,,,,} ,,,} ,,,//存在需要删除的关键 ,,,if (del_key美元),{ ,,,,,,,复述,→美元hDel(美元关键,,…del_key美元); ,,,} ,,,if (total 美元;祝辞=,max_frequency美元),{ ,,,,,,,return 假; ,,,} ,,,return 复述→美元hIncrBy(键,美元,now_time美元,1); } $ uid =, 1; $ result =, api_frequency_visits (uid); if (! $结果),{ ,,,echo , json_encode((& # 39;代码# 39;=祝辞0,,& # 39;味精# 39;=祝辞& # 39;操作过于频繁& # 39;,,& # 39;数据# 39;=祝辞[]]);死亡; } echo , json_encode([& # 39;代码# 39;=祝辞;1,& # 39;味精# 39;=祝辞& # 39;& # 39;,,& # 39;数据# 39;=祝辞( ,,,& # 39;uid # 39;=祝辞uid美元, ,,,& # 39;其他# 39;=祝辞rand () ]]);死亡;
限制时间,限制次数这些都可以修改,包括根据用户身份证也可以换成自己想要的限制,比如IP等。
键过期时间也是可以添加的。
以上是“PHP接口访问频率限制的示例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!