洛杉矶MC机房 高速低价18元起

DIYVM

php大佬进!如何限制php每秒只执行一次?

提示:如果官网是英文页面,建议使用谷歌浏览器能同步翻译页面。点击下载【谷歌浏览器最新绿色便携版】
注意:部分文章发布时间较长,可能存在未知因素,购买时建议在本站搜索商家名称,先充分了解商家动态。
交流:唯一投稿邮箱:hostvps@88.com。

网友 wfc 说:

*帖最后由 wfc 于 2022-7-16 07:53 编辑

a.php实际上每秒有10个ip同时访问,如何实现每秒只执行一个ip的请求,同一秒剩余9个的请求实际上代码是不执行的?
想了半天找不到解题思路

大佬果然厉害,感谢各位


网友 mslxd 说:

说得太复杂,,,,

做一个文件锁就行了

touch(‘abc.lock’)

如果存在这个abc.lock 就不执行了

事情做完了,把abc.lock删掉


网友 司马南 说:

*帖最后由 司马南 于 2022-7-16 07:16 编辑

等待一秒后执行下一次?

sleep


网友 FeiLai 说:

以我半杯水的水平只能想到用mys*l来限制


网友 wfc 说:

司马南 发表于 2022-7-16 07:14
等待一秒后执行下一次?
网友 gzlock 说:

需要额外的存储来限制,例如redis


网友 司马南 说:

wfc 发表于 2022-7-16 07:16
sleep不行的,其他ip请求会执行
网友 wfc 说:

gzlock 发表于 2022-7-16 07:17
需要额外的存储来限制,例如redis
网友 wfc 说:

司马南 发表于 2022-7-16 07:19
包起来啊加个判断,
网友 snoywing 说:

*帖最后由 snoywing 于 2022-7-16 07:25 编辑

队列,请求都插队列里,如果当前请求在队列是当前秒数第一则处理,队列数据存活周期两秒。
另外利用悲观锁应该也能实现


网友 wfc 说:

snoywing 发表于 2022-7-16 07:23
队列,请求都插队列里,如果当前请求在队列是当前秒数第一则处理,队列数据存活周期两秒。
另外利用悲观锁 …
网友 司马南 说:

wfc 发表于 2022-7-16 07:22
其他ip的同一秒请求在a.php会认为是一个新的请求
网友 大雄。 说:

不懂         


网友 snoywing 说:

wfc 发表于 2022-7-16 07:27
大佬这个好像有用,我找找代码试试
网友 snoywing 说:

如11楼所说,nginx做穿透命中控制也可以


网友 妖言惑众 说:

redis或者nginx limit


网友 mslxd 说:

说得太复杂,,,,

做一个文件锁就行了

touch(‘abc.lock’)

如果存在这个abc.lock 就不执行了

事情做完了,把abc.lock删掉


网友 plugins 说:

生成队列,存储到***里面,**每秒用CRON查询前一秒的队列,选择其中一个执行


网友 ii** 说:

全局队列 卡夫卡等 很多办法


网友 mean 说:

不用现成工具的话(各种网关、阿里的 sentinel),可以自己实现一个限流算法:漏桶或者令牌桶(突发)。确定算法后找对应语言的现成实现,很多时候分布式**还需要借助中间件(redis, am*p)来具体实施


网友 c7r1st 说:

加锁


网友 wfc 说:

mslxd 发表于 2022-7-16 08:57
说得太复杂,,,,

做一个文件锁就行了
网友 翻车的老司机 说:

目录下生成个时间*命名的文件,php执行时候读当前时间*,对比之前那个。


网友 rw1024 说:

这你得说明下,剩余9个是直接进入队列等待执行,还是直接拒绝请求。
如果进入队列,建议你了解下swoole协程
如果是直接拒绝,在你执行文件里可以使用redis自行封装一个方法
例如:if(!$redis->setOrnull()){header(&*uot;HTTP/1.0 404 Not Found&*uot;);}
  自行封装setOrnull方法为 判断key是否存在,存在返回false  不存在则写入返回true 缓存周期1秒

About 贝壳

【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

本文链接:贝壳主机网 » php大佬进!如何限制php每秒只执行一次?

分享到: 生成海报
香港/美国/国内高速VPS
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活