如何限制 PHP 每秒只执行一次?

2022-07-16 07:14:43 +08:00
 yitalin
a.php 实际上每秒有 10 个 ip 同时访问,如何实现每秒只执行一个 ip 的请求,同一秒剩余 9 个的请求实际上代码是不执行的?
想了半天找不到解题思路
4069 次点击
所在节点    PHP
28 条回复
cszchen
2022-07-16 22:53:44 +08:00
是期望“每秒”只有一个请求,还是同一个时间点只有一个请求。区别很大,解决的思路很简单。
装个 redis ,获取原子锁,没有群的要等
liyunlong5
2022-07-17 16:36:06 +08:00
@em70 这个只是限制一个连接,真正限制请求要加上 limit req 1r/s
janus77
2022-07-17 19:35:50 +08:00
加一层缓存就行了呗,一秒内的请求都走缓存
hoopan
2022-07-18 09:21:05 +08:00
php 进程池只开一个呢,为啥会有这种奇怪的需求,原始需求是啥?如果是防止并发出错,可以加锁。
junwind
2022-07-18 09:39:56 +08:00
第一个 ip 访问进来写一个 session ,第一个进来,如果有这个值就 return ,没试过,不知道能否实现你的要求
xuelu520
2022-07-18 11:36:08 +08:00
加锁就行了
wolfie
2022-07-18 11:47:17 +08:00
java 思路
请求扔队列,根据 ip 分组。
所有请求共用互斥锁,定义个守护线程循环 wait 、notify.
tianyou666shen
2022-07-18 13:28:52 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX